Skip to content

Commit cb03899

Browse files
committed
refactor: add isActive to ErrorMessageID
Currently there is no way to tell if a given `ErrorMessageID` is emitted at all from the compiler. While working on an index of all the IDs I keep needing to dig into the code to see if there is a message that uses an `ErrorMessageID` and then see if that message is actually used anywhere. From what I can gather so far, the ones that I've marked as `false` are no longer emitted and therefore marked `isActive = false`. refs: #14904
1 parent 53f5531 commit cb03899

File tree

4 files changed

+211
-227
lines changed

4 files changed

+211
-227
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,187 +1,190 @@
11
package dotty.tools.dotc.reporting
22

3-
/** Unique IDs identifying the messages */
4-
enum ErrorMessageID extends java.lang.Enum[ErrorMessageID]:
3+
/** Unique IDs identifying the messages
4+
* @param isActive Whether or not the compile still emits this ErrorMessageID
5+
**/
6+
enum ErrorMessageID(val isActive: Boolean = true) extends java.lang.Enum[ErrorMessageID]:
57

68
// IMPORTANT: Add new IDs only at the end and never remove IDs
7-
case
8-
LazyErrorId, // // errorNumber: -2
9-
NoExplanationID, // errorNumber: -1
9+
case LazyErrorId // // errorNumber: -2
10+
case NoExplanationID // errorNumber: -1
1011

11-
EmptyCatchOrFinallyBlockID, // errorNumber: 0
12-
EmptyCatchBlockID, // errorNumber: 1
13-
EmptyCatchAndFinallyBlockID, // errorNumber: 2
14-
DeprecatedWithOperatorID,
15-
CaseClassMissingParamListID,
16-
DuplicateBindID,
17-
MissingIdentID,
18-
TypeMismatchID,
19-
NotAMemberID,
20-
EarlyDefinitionsNotSupportedID,
21-
TopLevelImplicitClassID,
22-
ImplicitCaseClassID,
23-
ImplicitClassPrimaryConstructorArityID,
24-
ObjectMayNotHaveSelfTypeID,
25-
TupleTooLongID,
26-
RepeatedModifierID,
27-
InterpolatedStringErrorID,
28-
UnboundPlaceholderParameterID,
29-
IllegalStartSimpleExprID,
30-
MissingReturnTypeID,
31-
YieldOrDoExpectedInForComprehensionID,
32-
ProperDefinitionNotFoundID,
33-
ByNameParameterNotSupportedID,
34-
WrongNumberOfTypeArgsID,
35-
IllegalVariableInPatternAlternativeID,
36-
IdentifierExpectedID,
37-
AuxConstructorNeedsNonImplicitParameterID,
38-
VarArgsParamMustComeLastID,
39-
IllegalLiteralID,
40-
PatternMatchExhaustivityID,
41-
MatchCaseUnreachableID,
42-
SeqWildcardPatternPosID,
43-
IllegalStartOfSimplePatternID,
44-
PkgDuplicateSymbolID,
45-
ExistentialTypesNoLongerSupportedID,
46-
UnboundWildcardTypeID,
47-
DanglingThisInPathID,
48-
OverridesNothingID,
49-
OverridesNothingButNameExistsID,
50-
ForwardReferenceExtendsOverDefinitionID,
51-
ExpectedTokenButFoundID,
52-
MixedLeftAndRightAssociativeOpsID,
53-
CantInstantiateAbstractClassOrTraitID,
54-
UnreducibleApplicationID,
55-
OverloadedOrRecursiveMethodNeedsResultTypeID,
56-
RecursiveValueNeedsResultTypeID,
57-
CyclicReferenceInvolvingID,
58-
CyclicReferenceInvolvingImplicitID,
59-
SuperQualMustBeParentID,
60-
AmbiguousReferenceID,
61-
MethodDoesNotTakeParametersId,
62-
AmbiguousOverloadID,
63-
ReassignmentToValID,
64-
TypeDoesNotTakeParametersID,
65-
ParameterizedTypeLacksArgumentsID,
66-
VarValParametersMayNotBeCallByNameID,
67-
MissingTypeParameterForID,
68-
DoesNotConformToBoundID,
69-
DoesNotConformToSelfTypeID,
70-
DoesNotConformToSelfTypeCantBeInstantiatedID,
71-
AbstractMemberMayNotHaveModifierID,
72-
TopLevelCantBeImplicitID,
73-
TypesAndTraitsCantBeImplicitID,
74-
OnlyClassesCanBeAbstractID,
75-
AbstractOverrideOnlyInTraitsID,
76-
TraitsMayNotBeFinalID,
77-
NativeMembersMayNotHaveImplementationID,
78-
OnlyClassesCanHaveDeclaredButUndefinedMembersID,
79-
CannotExtendAnyValID,
80-
CannotHaveSameNameAsID,
81-
ValueClassesMayNotDefineInnerID,
82-
ValueClassesMayNotDefineNonParameterFieldID,
83-
ValueClassesMayNotDefineASecondaryConstructorID,
84-
ValueClassesMayNotContainInitalizationID,
85-
ValueClassesMayNotBeAbstractID,
86-
ValueClassesMayNotBeContaintedID,
87-
ValueClassesMayNotWrapAnotherValueClassID,
88-
ValueClassParameterMayNotBeAVarID,
89-
ValueClassNeedsExactlyOneValParamID,
90-
UNUSED1,
91-
UNUSED2,
92-
AnonymousFunctionMissingParamTypeID,
93-
SuperCallsNotAllowedInlineableID,
94-
NotAPathID,
95-
WildcardOnTypeArgumentNotAllowedOnNewID,
96-
FunctionTypeNeedsNonEmptyParameterListID,
97-
WrongNumberOfParametersID,
98-
DuplicatePrivateProtectedQualifierID,
99-
ExpectedStartOfTopLevelDefinitionID,
100-
MissingReturnTypeWithReturnStatementID,
101-
NoReturnFromInlineableID,
102-
ReturnOutsideMethodDefinitionID,
103-
UncheckedTypePatternID,
104-
ExtendFinalClassID,
105-
EnumCaseDefinitionInNonEnumOwnerID,
106-
ExpectedTypeBoundOrEqualsID,
107-
ClassAndCompanionNameClashID,
108-
TailrecNotApplicableID,
109-
FailureToEliminateExistentialID,
110-
OnlyFunctionsCanBeFollowedByUnderscoreID,
111-
MissingEmptyArgumentListID,
112-
DuplicateNamedTypeParameterID,
113-
UndefinedNamedTypeParameterID,
114-
IllegalStartOfStatementID,
115-
TraitIsExpectedID,
116-
TraitRedefinedFinalMethodFromAnyRefID,
117-
PackageNameAlreadyDefinedID,
118-
UnapplyInvalidNumberOfArgumentsID,
119-
UnapplyInvalidReturnTypeID,
120-
StaticFieldsOnlyAllowedInObjectsID,
121-
CyclicInheritanceID,
122-
BadSymbolicReferenceID,
123-
UnableToExtendSealedClassID,
124-
SymbolHasUnparsableVersionNumberID,
125-
SymbolChangedSemanticsInVersionID,
126-
UnableToEmitSwitchID,
127-
MissingCompanionForStaticID,
128-
PolymorphicMethodMissingTypeInParentID,
129-
ParamsNoInlineID,
130-
JavaSymbolIsNotAValueID,
131-
DoubleDefinitionID,
132-
MatchCaseOnlyNullWarningID,
133-
ImportRenamedTwiceID,
134-
TypeTestAlwaysDivergesID,
135-
TermMemberNeedsNeedsResultTypeForImplicitSearchID,
136-
ClassCannotExtendEnumID,
137-
ValueClassParameterMayNotBeCallByNameID,
138-
NotAnExtractorID,
139-
MemberWithSameNameAsStaticID,
140-
PureExpressionInStatementPositionID,
141-
TraitCompanionWithMutableStaticID,
142-
LazyStaticFieldID,
143-
StaticOverridingNonStaticMembersID,
144-
OverloadInRefinementID,
145-
NoMatchingOverloadID,
146-
StableIdentPatternID,
147-
StaticFieldsShouldPrecedeNonStaticID,
148-
IllegalSuperAccessorID,
149-
TraitParameterUsedAsParentPrefixID,
150-
UnknownNamedEnclosingClassOrObjectID,
151-
IllegalCyclicTypeReferenceID,
152-
MissingTypeParameterInTypeAppID,
153-
SkolemInInferredID,
154-
ErasedTypesCanOnlyBeFunctionTypesID,
155-
CaseClassMissingNonImplicitParamListID,
156-
EnumerationsShouldNotBeEmptyID,
157-
IllegalParameterInitID,
158-
RedundantModifierID,
159-
TypedCaseDoesNotExplicitlyExtendTypedEnumID,
160-
IllegalRedefinitionOfStandardKindID,
161-
NoExtensionMethodAllowedID,
162-
ExtensionMethodCannotHaveTypeParamsID,
163-
ExtensionCanOnlyHaveDefsID,
164-
UnexpectedPatternForSummonFromID,
165-
AnonymousInstanceCannotBeEmptyID,
166-
TypeSpliceInValPatternID,
167-
ModifierNotAllowedForDefinitionID,
168-
CannotExtendJavaEnumID,
169-
InvalidReferenceInImplicitNotFoundAnnotationID,
170-
TraitMayNotDefineNativeMethodID,
171-
JavaEnumParentArgsID,
172-
AlreadyDefinedID,
173-
CaseClassInInlinedCodeID,
174-
OverrideTypeMismatchErrorID,
175-
OverrideErrorID,
176-
MatchableWarningID,
177-
CannotExtendFunctionID,
178-
LossyWideningConstantConversionID,
179-
ImplicitSearchTooLargeID
12+
case EmptyCatchOrFinallyBlockID extends ErrorMessageID(isActive = false) // errorNumber: 0
13+
case EmptyCatchBlockID // errorNumber: 1
14+
case EmptyCatchAndFinallyBlockID // errorNumber: 2
15+
case DeprecatedWithOperatorID // errorNumber: 3
16+
case CaseClassMissingParamListID // errorNumber: 4
17+
case DuplicateBindID // errorNumber: 5
18+
case MissingIdentID // errorNumber: 6
19+
case TypeMismatchID // errorNumber: 7
20+
case NotAMemberID // errorNumber: 8
21+
case EarlyDefinitionsNotSupportedID // errorNumber: 9
22+
case TopLevelImplicitClassID extends ErrorMessageID(isActive = false) // errorNumber: 10
23+
case ImplicitCaseClassID // errorNumber: 11
24+
case ImplicitClassPrimaryConstructorArityID // errorNumber: 12
25+
case ObjectMayNotHaveSelfTypeID // errorNumber: 13
26+
case TupleTooLongID extends ErrorMessageID(isActive = false) // errorNumber: 14
27+
case RepeatedModifierID // errorNumber: 15
28+
case InterpolatedStringErrorID // errorNumber: 16
29+
case UnboundPlaceholderParameterID // errorNumber: 17
30+
case IllegalStartSimpleExprID // errorNumber: 18
31+
case MissingReturnTypeID // errorNumber: 19
32+
case YieldOrDoExpectedInForComprehensionID // errorNumber: 20
33+
case ProperDefinitionNotFoundID // errorNumber: 21
34+
case ByNameParameterNotSupportedID // errorNumber: 22
35+
case WrongNumberOfTypeArgsID // errorNumber: 23
36+
case IllegalVariableInPatternAlternativeID // errorNumber: 24
37+
case IdentifierExpectedID // errorNumber: 25
38+
case AuxConstructorNeedsNonImplicitParameterID // errorNumber: 26
39+
case VarArgsParamMustComeLastID // errorNumber: 27
40+
case IllegalLiteralID // errorNumber: 28
41+
case PatternMatchExhaustivityID // errorNumber: 29
42+
case MatchCaseUnreachableID // errorNumber: 30
43+
case SeqWildcardPatternPosID // errorNumber: 31
44+
case IllegalStartOfSimplePatternID // errorNumber: 32
45+
case PkgDuplicateSymbolID // errorNumber: 33
46+
case ExistentialTypesNoLongerSupportedID // errorNumber: 34
47+
case UnboundWildcardTypeID // errorNumber: 35
48+
case DanglingThisInPathID extends ErrorMessageID(isActive = false) // errorNumber: 36
49+
case OverridesNothingID // errorNumber: 37
50+
case OverridesNothingButNameExistsID // errorNumber: 38
51+
case ForwardReferenceExtendsOverDefinitionID // errorNumber: 39
52+
case ExpectedTokenButFoundID // errorNumber: 40
53+
case MixedLeftAndRightAssociativeOpsID // errorNumber: 41
54+
case CantInstantiateAbstractClassOrTraitID // errorNumber: 42
55+
case UnreducibleApplicationID // errorNumber: 43
56+
case OverloadedOrRecursiveMethodNeedsResultTypeID // errorNumber: 44
57+
case RecursiveValueNeedsResultTypeID // errorNumber: 45
58+
case CyclicReferenceInvolvingID // errorNumber: 46
59+
case CyclicReferenceInvolvingImplicitID // errorNumber: 47
60+
case SuperQualMustBeParentID // errorNumber: 48
61+
case AmbiguousReferenceID // errorNumber: 49
62+
case MethodDoesNotTakeParametersId // errorNumber: 50
63+
case AmbiguousOverloadID // errorNumber: 51
64+
case ReassignmentToValID // errorNumber: 52
65+
case TypeDoesNotTakeParametersID // errorNumber: 53
66+
case ParameterizedTypeLacksArgumentsID // errorNumber: 54
67+
case VarValParametersMayNotBeCallByNameID // errorNumber: 55
68+
case MissingTypeParameterForID // errorNumber: 56
69+
case DoesNotConformToBoundID // errorNumber: 57
70+
case DoesNotConformToSelfTypeID // errorNumber: 58
71+
case DoesNotConformToSelfTypeCantBeInstantiatedID // errorNumber: 59
72+
case AbstractMemberMayNotHaveModifierID // errorNumber: 60
73+
case TopLevelCantBeImplicitID extends ErrorMessageID(isActive = false) // errorNumber: 61
74+
case TypesAndTraitsCantBeImplicitID // errorNumber: 62
75+
case OnlyClassesCanBeAbstractID // errorNumber: 63
76+
case AbstractOverrideOnlyInTraitsID // errorNumber: 64
77+
case TraitsMayNotBeFinalID // errorNumber: 65
78+
case NativeMembersMayNotHaveImplementationID // errorNumber: 66
79+
case OnlyClassesCanHaveDeclaredButUndefinedMembersID // errorNumber: 67
80+
case CannotExtendAnyValID // errorNumber: 68
81+
case CannotHaveSameNameAsID // errorNumber: 69
82+
case ValueClassesMayNotDefineInnerID // errorNumber: 70
83+
case ValueClassesMayNotDefineNonParameterFieldID // errorNumber: 71
84+
case ValueClassesMayNotDefineASecondaryConstructorID // errorNumber: 72
85+
case ValueClassesMayNotContainInitalizationID // errorNumber: 73
86+
case ValueClassesMayNotBeAbstractID // errorNumber: 74
87+
case ValueClassesMayNotBeContaintedID // errorNumber: 75
88+
case ValueClassesMayNotWrapAnotherValueClassID // errorNumber: 76
89+
case ValueClassParameterMayNotBeAVarID // errorNumber: 77
90+
case ValueClassNeedsExactlyOneValParamID // errorNumber: 78
91+
case OnlyCaseClassOrCaseObjectAllowedID extends ErrorMessageID(isActive = false) // errorNumber: 79
92+
case ExpectedTopLevelDefID extends ErrorMessageID(isActive = false) // errorNumber: 80
93+
case AnonymousFunctionMissingParamTypeID // errorNumber: 81
94+
case SuperCallsNotAllowedInlineableID // errorNumber: 82
95+
case NotAPathID // errorNumber: 83
96+
case WildcardOnTypeArgumentNotAllowedOnNewID // errorNumber: 84
97+
case FunctionTypeNeedsNonEmptyParameterListID // errorNumber: 85
98+
case WrongNumberOfParametersID // errorNumber: 86
99+
case DuplicatePrivateProtectedQualifierID // errorNumber: 87
100+
case ExpectedStartOfTopLevelDefinitionID // errorNumber: 88
101+
case MissingReturnTypeWithReturnStatementID // errorNumber: 89
102+
case NoReturnFromInlineableID // errorNumber: 90
103+
case ReturnOutsideMethodDefinitionID // errorNumber: 91
104+
case UncheckedTypePatternID // errorNumber: 92
105+
case ExtendFinalClassID // errorNumber: 93
106+
case EnumCaseDefinitionInNonEnumOwnerID // errorNumber: 94
107+
case ExpectedTypeBoundOrEqualsID // errorNumber: 95
108+
case ClassAndCompanionNameClashID // errorNumber: 96
109+
case TailrecNotApplicableID // errorNumber: 97
110+
case FailureToEliminateExistentialID // errorNumber: 98
111+
case OnlyFunctionsCanBeFollowedByUnderscoreID // errorNumber: 99
112+
case MissingEmptyArgumentListID // errorNumber: 100
113+
case DuplicateNamedTypeParameterID // errorNumber: 101
114+
case UndefinedNamedTypeParameterID // errorNumber: 102
115+
case IllegalStartOfStatementID // errorNumber: 1033
116+
case TraitIsExpectedID // errorNumber: 104
117+
case TraitRedefinedFinalMethodFromAnyRefID // errorNumber: 105
118+
case PackageNameAlreadyDefinedID // errorNumber: 106
119+
case UnapplyInvalidNumberOfArgumentsID // errorNumber: 107
120+
case UnapplyInvalidReturnTypeID // errorNumber: 108
121+
case StaticFieldsOnlyAllowedInObjectsID // errorNumber: 109
122+
case CyclicInheritanceID // errorNumber: 110
123+
case BadSymbolicReferenceID // errorNumber: 111
124+
case UnableToExtendSealedClassID // errorNumber: 112
125+
case SymbolHasUnparsableVersionNumberID // errorNumber: 113
126+
case SymbolChangedSemanticsInVersionID // errorNumber: 114
127+
case UnableToEmitSwitchID // errorNumber: 115
128+
case MissingCompanionForStaticID // errorNumber: 116
129+
case PolymorphicMethodMissingTypeInParentID // errorNumber: 117
130+
case ParamsNoInlineID // errorNumber: 118
131+
case JavaSymbolIsNotAValueID // errorNumber: 119
132+
case DoubleDefinitionID // errorNumber: 120
133+
case MatchCaseOnlyNullWarningID // errorNumber: 121
134+
case ImportRenamedTwiceID // errorNumber: 122
135+
case TypeTestAlwaysDivergesID // errorNumber: 123
136+
case TermMemberNeedsNeedsResultTypeForImplicitSearchID // errorNumber: 124
137+
case ClassCannotExtendEnumID // errorNumber: 125
138+
case ValueClassParameterMayNotBeCallByNameID // errorNumber: 126
139+
case NotAnExtractorID // errorNumber: 127
140+
case MemberWithSameNameAsStaticID // errorNumber: 128
141+
case PureExpressionInStatementPositionID // errorNumber: 129
142+
case TraitCompanionWithMutableStaticID // errorNumber: 130
143+
case LazyStaticFieldID // errorNumber: 131
144+
case StaticOverridingNonStaticMembersID // errorNumber: 132
145+
case OverloadInRefinementID // errorNumber: 133
146+
case NoMatchingOverloadID // errorNumber: 134
147+
case StableIdentPatternID // errorNumber: 135
148+
case StaticFieldsShouldPrecedeNonStaticID // errorNumber: 136
149+
case IllegalSuperAccessorID // errorNumber: 137
150+
case TraitParameterUsedAsParentPrefixID // errorNumber: 138
151+
case UnknownNamedEnclosingClassOrObjectID // errorNumber: 139
152+
case IllegalCyclicTypeReferenceID // errorNumber: 140
153+
case MissingTypeParameterInTypeAppID // errorNumber: 141
154+
case SkolemInInferredID // errorNumber: 142
155+
case ErasedTypesCanOnlyBeFunctionTypesID // errorNumber: 143
156+
case CaseClassMissingNonImplicitParamListID // errorNumber: 144
157+
case EnumerationsShouldNotBeEmptyID // errorNumber: 145
158+
case IllegalParameterInitID // errorNumber: 146
159+
case RedundantModifierID // errorNumber: 147
160+
case TypedCaseDoesNotExplicitlyExtendTypedEnumID // errorNumber: 148
161+
case IllegalRedefinitionOfStandardKindID // errorNumber: 149
162+
case NoExtensionMethodAllowedID // errorNumber: 150
163+
case ExtensionMethodCannotHaveTypeParamsID // errorNumber: 151
164+
case ExtensionCanOnlyHaveDefsID // errorNumber: 152
165+
case UnexpectedPatternForSummonFromID // errorNumber: 153
166+
case AnonymousInstanceCannotBeEmptyID // errorNumber: 154
167+
case TypeSpliceInValPatternID // errorNumber: 155
168+
case ModifierNotAllowedForDefinitionID // errorNumber: 156
169+
case CannotExtendJavaEnumID // errorNumber: 157
170+
case InvalidReferenceInImplicitNotFoundAnnotationID // errorNumber: 158
171+
case TraitMayNotDefineNativeMethodID // errorNumber: 159
172+
case JavaEnumParentArgsID // errorNumber: 160
173+
case AlreadyDefinedID // errorNumber: 161
174+
case CaseClassInInlinedCodeID // errorNumber: 162
175+
case OverrideTypeMismatchErrorID // errorNumber: 163
176+
case OverrideErrorID // errorNumber: 164
177+
case MatchableWarningID // errorNumber: 165
178+
case CannotExtendFunctionID // errorNumber: 166
179+
case LossyWideningConstantConversionID // errorNumber: 167
180+
case ImplicitSearchTooLargeID // errorNumber: 168
180181

181182
def errorNumber = ordinal - 2
182183

183184
object ErrorMessageID:
184-
def fromErrorNumber(n: Int): Option[ErrorMessageID] =
185+
def fromErrorNumber(n: Int): Either[String, ErrorMessageID] =
185186
val enumId = n + 2
186-
if enumId >= 2 && enumId < ErrorMessageID.values.length then Some(fromOrdinal(enumId))
187-
else None
187+
if enumId >= 2 && enumId < ErrorMessageID.values.length then
188+
val id = fromOrdinal(enumId)
189+
if id.isActive then Right(id) else Left(s"${id.toString} is marked inactive.")
190+
else Left(s"An ErrorMessageID doesn't exit for ${n.toString}")

0 commit comments

Comments
 (0)