Skip to content

Commit e1475f2

Browse files
Move issues to an extension of Proposal.Issue
- Replace ValidationIssue enum with Proposal.Issue extension - Change filename from ValidationIssue to ValidationIssues - Use leading dot syntax for defined issues
1 parent bf93149 commit e1475f2

11 files changed

+28
-28
lines changed

Sources/EvolutionMetadataExtraction/Extractors/EvolutionMetadataExtractor.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ struct EvolutionMetadataExtractor {
100100

101101
} catch {
102102
print(error)
103-
return SortableProposalWrapper(proposal: Proposal(errors:[ValidationIssue.proposalContainsNoContent]), sortIndex: proposalSpec.sortIndex)
103+
return SortableProposalWrapper(proposal: Proposal(errors:[.proposalContainsNoContent]), sortIndex: proposalSpec.sortIndex)
104104
}
105105
}
106106

Sources/EvolutionMetadataExtraction/Extractors/FieldExtractors/DiscussionExtractor.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ struct DiscussionExtractor: MarkupWalker, ValueExtractor {
2828
// format discussions correctly. Those issues should be corrected in the proposals themselves.
2929
// Once all of those issues are resolved, the legacy check can be removed.
3030
if discussions.isEmpty && !Legacy.discussionExtractionFailures.contains(sourceValues.proposalID) {
31-
errors.append(ValidationIssue.discussionExtractionFailure)
31+
errors.append(.discussionExtractionFailure)
3232
}
3333
} else {
3434
// VALIDATION ENHANCEMENT: Add field to proposals with missing field and remove special case logic.
@@ -37,7 +37,7 @@ struct DiscussionExtractor: MarkupWalker, ValueExtractor {
3737
// Once all of those issues are resolved, the legacy check can be removed.
3838
// Note that some very early proposals may not have valid discussions be extracted.
3939
if !Legacy.missingReviewFields.contains(sourceValues.proposalID) {
40-
errors.append(ValidationIssue.missingReviewField)
40+
errors.append(.missingReviewField)
4141
}
4242
}
4343

@@ -60,7 +60,7 @@ struct DiscussionExtractor: MarkupWalker, ValueExtractor {
6060
if let discussionURL = linkInfo.swiftForumsDestination {
6161
discussions.append(Proposal.Discussion(name: linkInfo.text, link: discussionURL))
6262
} else {
63-
warnings.append(ValidationIssue.invalidDiscussionLink)
63+
warnings.append(.invalidDiscussionLink)
6464
}
6565
}
6666
}

Sources/EvolutionMetadataExtraction/Extractors/FieldExtractors/ImplementationExtractor.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ struct ImplementationExtractor: MarkupWalker, ValueExtractor {
7575

7676
// VALIDATION ENHANCEMENT: The legacy tool lowercases the tested value. This is probably not necessary.
7777
guard account == "apple" else {
78-
warnings.append(ValidationIssue.invalidImplementationLink)
78+
warnings.append(.invalidImplementationLink)
7979
return
8080
}
8181

Sources/EvolutionMetadataExtraction/Extractors/FieldExtractors/PersonExtractor.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,16 @@ struct PersonExtractor: MarkupWalker {
6161
}
6262
// VALIDATION ENHANCEMENT: Add 'extra markup error' for review managers
6363
if !linkInfo.containsTextElement && role == .author {
64-
errors.append(ValidationIssue.authorsHaveExtraMarkup)
64+
errors.append(.authorsHaveExtraMarkup)
6565
}
6666

6767
let destination: String
6868
if let validatedDestination = linkInfo.gitHubDestination {
6969
destination = validatedDestination
7070
} else {
7171
switch role {
72-
case .author: warnings.append(ValidationIssue.invalidAuthorLink)
73-
case .reviewManager: warnings.append(ValidationIssue.invalidReviewManagerLink)
72+
case .author: warnings.append(.invalidAuthorLink)
73+
case .reviewManager: warnings.append(.invalidReviewManagerLink)
7474
}
7575
destination = ""
7676
}

Sources/EvolutionMetadataExtraction/Extractors/FieldExtractors/PreviousProposalExtractor.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ struct PreviousProposalExtractor: MarkupWalker, ValueExtractor {
2727

2828
// validate that if the header field is here at least one proposal ID was found
2929
if _previousProposalIDs.isEmpty {
30-
errors.append(ValidationIssue.previousProposalIDsExtractionFailure)
30+
errors.append(.previousProposalIDsExtractionFailure)
3131
}
3232
}
3333

Sources/EvolutionMetadataExtraction/Extractors/FieldExtractors/ProposalLinkExtractor.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,24 @@ struct ProposalLinkExtractor: MarkupWalker, ValueExtractor {
2020
if let headerField = headerFieldsByLabel["Proposal"] {
2121
visit(headerField)
2222
} else {
23-
errors.append(ValidationIssue.missingProposalIDLink)
23+
errors.append(.missingProposalIDLink)
2424
}
2525
if let proposalLink {
2626

2727
if !proposalLink.containsTextElement {
28-
warnings.append(ValidationIssue.proposalIDHasExtraMarkup)
28+
warnings.append(.proposalIDHasExtraMarkup)
2929
}
3030

3131
// VALIDATION ENHANCEMENT: To match legacy behavior, if ID has extra markup, the
3232
// ID is an empty string. An enhancement would be to capture the ID if possible
3333
if !proposalLink.text.isEmpty {
3434

3535
if proposalLink.text == "SE-0000" {
36-
errors.append(ValidationIssue.reservedProposalID)
36+
errors.append(.reservedProposalID)
3737
}
3838

3939
if !proposalLink.text.contains(/^SE-\d\d\d\d$/) {
40-
errors.append(ValidationIssue.proposalIDWrongDigitCount)
40+
errors.append(.proposalIDWrongDigitCount)
4141
}
4242

4343
// VALIDATION ENHANCEMENT: Once we move from the legacy tool. Remove this.
@@ -58,14 +58,14 @@ struct ProposalLinkExtractor: MarkupWalker, ValueExtractor {
5858
}
5959

6060
} else {
61-
errors.append(ValidationIssue.missingProposalIDLink)
61+
errors.append(.missingProposalIDLink)
6262
}
6363
return ExtractionResult(value: proposalLink ?? LinkInfo(text: "", destination: ""), warnings: warnings, errors: errors)
6464
}
6565

6666
mutating func visitLink(_ link: Link) -> () {
6767
guard let value = LinkInfo(link: link) else {
68-
errors.append(ValidationIssue.missingProposalIDLink)
68+
errors.append(.missingProposalIDLink)
6969
return
7070
}
7171
proposalLink = value

Sources/EvolutionMetadataExtraction/Extractors/FieldExtractors/StatusExtractor.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ struct StatusExtractor: MarkupWalker, ValueExtractor {
3030

3131
// This checks both that the field is found and is successfully extracted
3232
if status == nil {
33-
warnings.append(ValidationIssue.missingStatus)
33+
warnings.append(.missingStatus)
3434
}
3535
return ExtractionResult(value: status, warnings: warnings, errors: errors)
3636
}
@@ -61,14 +61,14 @@ struct StatusExtractor: MarkupWalker, ValueExtractor {
6161
warnings.append(warning)
6262
}
6363
} else {
64-
warnings.append(ValidationIssue.missingOrInvalidReviewDates)
64+
warnings.append(.missingOrInvalidReviewDates)
6565
}
6666
}
6767

6868
if let rawStatus = Proposal.Status(name: statusString, version: version, start: start, end: end) {
6969
status = rawStatus
7070
} else {
71-
errors.append(ValidationIssue.missingOrInvalidStatus)
71+
errors.append(.missingOrInvalidStatus)
7272
status = .statusExtractionFailed
7373
}
7474
}
@@ -184,7 +184,7 @@ struct StatusExtractor: MarkupWalker, ValueExtractor {
184184
// VALIDATION ENHANCEMENT: Add (x) days before showing this.
185185
var reviewEndedWarning: Proposal.Issue?
186186
if processingDate > wrappedEndDate {
187-
reviewEndedWarning = ValidationIssue.reviewEnded(on: wrappedEndDate)
187+
reviewEndedWarning = .reviewEnded(on: wrappedEndDate)
188188
}
189189

190190
// Specify explicit GMT time zone and 'en_US_POSIX' locale

Sources/EvolutionMetadataExtraction/Extractors/FieldExtractors/TitleExtractor.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ struct TitleExtractor: ValueExtractor {
2828
title = titleElement.plainText
2929

3030
} else {
31-
errors.append(ValidationIssue.proposalContainsNoContent)
31+
errors.append(.proposalContainsNoContent)
3232
}
3333
return ExtractionResult(value: title, warnings: warnings, errors: errors)
3434

Sources/EvolutionMetadataExtraction/Extractors/FieldExtractors/UpcomingFeatureFlagExtractor.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ struct UpcomingFeatureFlagExtractor: MarkupWalker, ValueExtractor {
3636
if let flag {
3737
if flag.contains(/\s/) {
3838
self.flag = nil
39-
errors.append(ValidationIssue.malformedUpcomingFeatureFlag)
39+
errors.append(.malformedUpcomingFeatureFlag)
4040
}
4141
} else {
42-
errors.append(ValidationIssue.upcomingFeatureFlagExtractionFailure)
42+
errors.append(.upcomingFeatureFlagExtractionFailure)
4343
}
4444

4545
}

Sources/EvolutionMetadataExtraction/Extractors/ProposalMetadataExtractor.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ struct ProposalMetadataExtractor {
3838
let document = Document(parsing: markdown, options: [.disableSmartOpts])
3939

4040
guard !document.isEmpty else {
41-
proposal.errors = [ValidationIssue.emptyMarkdownFile]
41+
proposal.errors = [.emptyMarkdownFile]
4242
return proposal
4343
}
4444

@@ -57,14 +57,14 @@ struct ProposalMetadataExtractor {
5757
if let authors = extractValue(from: headerFieldsByLabel, with: AuthorExtractor.self), !authors.isEmpty {
5858
proposal.authors = authors
5959
} else {
60-
errors.append(ValidationIssue.missingAuthors)
60+
errors.append(.missingAuthors)
6161
}
6262

6363
if let reviewManagers = extractValue(from: headerFieldsByLabel, with: ReviewManagerExtractor.self), !reviewManagers.isEmpty {
6464
proposal.reviewManager = reviewManagers.first!
6565
proposal.reviewManagers = reviewManagers
6666
} else {
67-
warnings.append(ValidationIssue.missingReviewManagers)
67+
warnings.append(.missingReviewManagers)
6868
}
6969

7070
proposal.upcomingFeatureFlag = extractValue(from: headerFieldsByLabel, with: UpcomingFeatureFlagExtractor.self)
@@ -79,7 +79,7 @@ struct ProposalMetadataExtractor {
7979
if let discussions = extractValue(from: (headerFieldsByLabel, proposalSpec.id), with: DiscussionExtractor.self) {
8080
proposal.discussions = discussions
8181
} else {
82-
errors.append(ValidationIssue.missingReviewField)
82+
errors.append(.missingReviewField)
8383
}
8484

8585
if let status = extractValue(from: (headerFieldsByLabel, extractionDate), with: StatusExtractor.self) {
@@ -100,7 +100,7 @@ struct ProposalMetadataExtractor {
100100
proposal.status = .statusExtractionFailed
101101
}
102102
} else {
103-
errors.append(ValidationIssue.missingMetadataFields)
103+
errors.append(.missingMetadataFields)
104104
}
105105

106106
// Add warnings and errors if present

0 commit comments

Comments
 (0)