Skip to content

Commit fa64047

Browse files
committed
adding an _exhaustiveCheck to make sure we check for every possible variant
1 parent dea4b3a commit fa64047

22 files changed

Lines changed: 44 additions & 0 deletions

src/slang-nodes/ArgumentsDeclaration.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ export class ArgumentsDeclaration extends SlangNode {
3636
((variant: slangAst.ArgumentsDeclaration['variant']): void => {
3737
if (variant instanceof slangAst.PositionalArgumentsDeclaration) return;
3838
if (variant instanceof slangAst.NamedArgumentsDeclaration) return;
39+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
40+
const _exhaustiveCheck: never = variant;
3941
})(ast.variant);
4042
}
4143
this.variant = createNonterminalVariant(ast.variant, collected, options);

src/slang-nodes/ContractMember.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ export class ContractMember extends SlangNode {
8181
if (variant instanceof slangAst.StateVariableDefinition) return;
8282
if (variant instanceof slangAst.ErrorDefinition) return;
8383
if (variant instanceof slangAst.UserDefinedValueTypeDefinition) return;
84+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
85+
const _exhaustiveCheck: never = variant;
8486
})(ast.variant);
8587
}
8688
this.variant = createNonterminalVariant(ast.variant, collected, options);

src/slang-nodes/ContractSpecifier.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ export class ContractSpecifier extends SlangNode {
3535
((variant: slangAst.ContractSpecifier['variant']): void => {
3636
if (variant instanceof slangAst.InheritanceSpecifier) return;
3737
if (variant instanceof slangAst.StorageLayoutSpecifier) return;
38+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
39+
const _exhaustiveCheck: never = variant;
3840
})(ast.variant);
3941
}
4042
this.variant = createNonterminalVariant(ast.variant, collected, options);

src/slang-nodes/Expression.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,8 @@ export class Expression extends SlangNode {
153153
if (variant instanceof slangAst.DecimalNumberExpression) return;
154154
if (variant instanceof slangAst.StringExpression) return;
155155
if (variant instanceof slangAst.ElementaryType) return;
156+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
157+
const _exhaustiveCheck: never = variant;
156158
})(variant);
157159
}
158160
this.variant = createNonterminalVariant(variant, collected, options);

src/slang-nodes/FallbackFunctionAttribute.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ export class FallbackFunctionAttribute extends SlangNode {
5050
): void => {
5151
if (variant instanceof slangAst.ModifierInvocation) return;
5252
if (variant instanceof slangAst.OverrideSpecifier) return;
53+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
54+
const _exhaustiveCheck: never = variant;
5355
})(variant);
5456
}
5557
this.variant = createNonterminalVariant(variant, collected, options);

src/slang-nodes/ForStatementInitialization.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ export class ForStatementInitialization extends SlangNode {
5757
if (variant instanceof slangAst.ExpressionStatement) return;
5858
if (variant instanceof slangAst.VariableDeclarationStatement) return;
5959
if (variant instanceof slangAst.TupleDeconstructionStatement) return;
60+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
61+
const _exhaustiveCheck: never = variant;
6062
})(variant);
6163
}
6264
this.variant = createNonterminalVariant(variant, collected, options);

src/slang-nodes/FunctionAttribute.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ export class FunctionAttribute extends SlangNode {
4949
): void => {
5050
if (variant instanceof slangAst.ModifierInvocation) return;
5151
if (variant instanceof slangAst.OverrideSpecifier) return;
52+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
53+
const _exhaustiveCheck: never = variant;
5254
})(variant);
5355
}
5456
this.variant = createNonterminalVariant(variant, collected, options);

src/slang-nodes/ImportClause.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ export class ImportClause extends SlangNode {
3838
if (variant instanceof slangAst.PathImport) return;
3939
if (variant instanceof slangAst.NamedImport) return;
4040
if (variant instanceof slangAst.ImportDeconstruction) return;
41+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
42+
const _exhaustiveCheck: never = variant;
4143
})(ast.variant);
4244
}
4345
this.variant = createNonterminalVariant(ast.variant, collected, options);

src/slang-nodes/MappingKeyType.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ export class MappingKeyType extends SlangNode {
2929
((variant: slangAst.MappingKeyType['variant']): void => {
3030
if (variant instanceof slangAst.IdentifierPath) return;
3131
if (variant instanceof slangAst.ElementaryType) return;
32+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
33+
const _exhaustiveCheck: never = variant;
3234
})(ast.variant);
3335
}
3436
this.variant = createNonterminalVariant(ast.variant, collected);

src/slang-nodes/Pragma.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ export class Pragma extends SlangNode {
3838
if (variant instanceof slangAst.AbicoderPragma) return;
3939
if (variant instanceof slangAst.ExperimentalPragma) return;
4040
if (variant instanceof slangAst.VersionPragma) return;
41+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
42+
const _exhaustiveCheck: never = variant;
4143
})(ast.variant);
4244
}
4345
this.variant = createNonterminalVariant(ast.variant, collected, options);

0 commit comments

Comments
 (0)