diff --git a/src/slang-nodes/ArgumentsDeclaration.ts b/src/slang-nodes/ArgumentsDeclaration.ts index b896b17ed..a6b8f0988 100644 --- a/src/slang-nodes/ArgumentsDeclaration.ts +++ b/src/slang-nodes/ArgumentsDeclaration.ts @@ -18,7 +18,7 @@ function createNonterminalVariant( return new NamedArgumentsDeclaration(variant, options); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class ArgumentsDeclaration extends SlangNode { diff --git a/src/slang-nodes/ContractMember.ts b/src/slang-nodes/ContractMember.ts index 71d2ccebb..2a109000b 100644 --- a/src/slang-nodes/ContractMember.ts +++ b/src/slang-nodes/ContractMember.ts @@ -62,7 +62,7 @@ function createNonterminalVariant( return new UserDefinedValueTypeDefinition(variant); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class ContractMember extends SlangNode { diff --git a/src/slang-nodes/ContractSpecifier.ts b/src/slang-nodes/ContractSpecifier.ts index e8498bfb3..aa55bb401 100644 --- a/src/slang-nodes/ContractSpecifier.ts +++ b/src/slang-nodes/ContractSpecifier.ts @@ -18,7 +18,7 @@ function createNonterminalVariant( return new StorageLayoutSpecifier(variant, options); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class ContractSpecifier extends SlangNode { diff --git a/src/slang-nodes/Expression.ts b/src/slang-nodes/Expression.ts index 32b746a42..7d9468628 100644 --- a/src/slang-nodes/Expression.ts +++ b/src/slang-nodes/Expression.ts @@ -123,7 +123,7 @@ function createNonterminalVariant( return extractVariant(new ElementaryType(variant)); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class Expression extends SlangNode { diff --git a/src/slang-nodes/FallbackFunctionAttribute.ts b/src/slang-nodes/FallbackFunctionAttribute.ts index e696e7e41..735d47ab8 100644 --- a/src/slang-nodes/FallbackFunctionAttribute.ts +++ b/src/slang-nodes/FallbackFunctionAttribute.ts @@ -22,7 +22,7 @@ function createNonterminalVariant( return new OverrideSpecifier(variant); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class FallbackFunctionAttribute extends SlangNode { diff --git a/src/slang-nodes/ForStatementInitialization.ts b/src/slang-nodes/ForStatementInitialization.ts index a26489a0f..94174c051 100644 --- a/src/slang-nodes/ForStatementInitialization.ts +++ b/src/slang-nodes/ForStatementInitialization.ts @@ -29,7 +29,7 @@ function createNonterminalVariant( return new TupleDeconstructionStatement(variant, options); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class ForStatementInitialization extends SlangNode { diff --git a/src/slang-nodes/FunctionAttribute.ts b/src/slang-nodes/FunctionAttribute.ts index a4d36f472..689dd070a 100644 --- a/src/slang-nodes/FunctionAttribute.ts +++ b/src/slang-nodes/FunctionAttribute.ts @@ -22,7 +22,7 @@ function createNonterminalVariant( return new OverrideSpecifier(variant); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class FunctionAttribute extends SlangNode { diff --git a/src/slang-nodes/ImportClause.ts b/src/slang-nodes/ImportClause.ts index 58f3cd96b..fb5ff8a92 100644 --- a/src/slang-nodes/ImportClause.ts +++ b/src/slang-nodes/ImportClause.ts @@ -22,7 +22,7 @@ function createNonterminalVariant( return new ImportDeconstruction(variant, options); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class ImportClause extends SlangNode { diff --git a/src/slang-nodes/MappingKeyType.ts b/src/slang-nodes/MappingKeyType.ts index 4aa3cbd95..06f1087e5 100644 --- a/src/slang-nodes/MappingKeyType.ts +++ b/src/slang-nodes/MappingKeyType.ts @@ -15,7 +15,7 @@ function createNonterminalVariant( return new IdentifierPath(variant); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class MappingKeyType extends SlangNode { diff --git a/src/slang-nodes/Pragma.ts b/src/slang-nodes/Pragma.ts index 9d06b2a43..276555fe1 100644 --- a/src/slang-nodes/Pragma.ts +++ b/src/slang-nodes/Pragma.ts @@ -22,7 +22,7 @@ function createNonterminalVariant( return new VersionPragma(variant); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class Pragma extends SlangNode { diff --git a/src/slang-nodes/ReceiveFunctionAttribute.ts b/src/slang-nodes/ReceiveFunctionAttribute.ts index 9745d34fb..608df0894 100644 --- a/src/slang-nodes/ReceiveFunctionAttribute.ts +++ b/src/slang-nodes/ReceiveFunctionAttribute.ts @@ -22,7 +22,7 @@ function createNonterminalVariant( return new OverrideSpecifier(variant); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class ReceiveFunctionAttribute extends SlangNode { diff --git a/src/slang-nodes/SourceUnitMember.ts b/src/slang-nodes/SourceUnitMember.ts index 07e74b736..aeeb129aa 100644 --- a/src/slang-nodes/SourceUnitMember.ts +++ b/src/slang-nodes/SourceUnitMember.ts @@ -62,7 +62,7 @@ function createNonterminalVariant( return new EventDefinition(variant, options); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class SourceUnitMember extends SlangNode { diff --git a/src/slang-nodes/Statement.ts b/src/slang-nodes/Statement.ts index 783ed3ac5..efc3c95f0 100644 --- a/src/slang-nodes/Statement.ts +++ b/src/slang-nodes/Statement.ts @@ -78,7 +78,7 @@ function createNonterminalVariant( return new UncheckedBlock(variant, options); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class Statement extends SlangNode { diff --git a/src/slang-nodes/StringExpression.ts b/src/slang-nodes/StringExpression.ts index 7dac815db..d51d5ed88 100644 --- a/src/slang-nodes/StringExpression.ts +++ b/src/slang-nodes/StringExpression.ts @@ -30,7 +30,7 @@ function createNonterminalVariant( return new UnicodeStringLiterals(variant, options); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class StringExpression extends SlangNode { diff --git a/src/slang-nodes/TupleMember.ts b/src/slang-nodes/TupleMember.ts index 4eb3bbe0b..e3361c478 100644 --- a/src/slang-nodes/TupleMember.ts +++ b/src/slang-nodes/TupleMember.ts @@ -18,7 +18,7 @@ function createNonterminalVariant( return new UntypedTupleMember(variant); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class TupleMember extends SlangNode { diff --git a/src/slang-nodes/TypeName.ts b/src/slang-nodes/TypeName.ts index e4868c37a..a04ee7639 100644 --- a/src/slang-nodes/TypeName.ts +++ b/src/slang-nodes/TypeName.ts @@ -31,7 +31,7 @@ function createNonterminalVariant( return new IdentifierPath(variant); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class TypeName extends SlangNode { diff --git a/src/slang-nodes/UsingClause.ts b/src/slang-nodes/UsingClause.ts index e619b60c9..38e951b20 100644 --- a/src/slang-nodes/UsingClause.ts +++ b/src/slang-nodes/UsingClause.ts @@ -14,7 +14,7 @@ function createNonterminalVariant( return new UsingDeconstruction(variant); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class UsingClause extends SlangNode { diff --git a/src/slang-nodes/VersionExpression.ts b/src/slang-nodes/VersionExpression.ts index 1385e3ee3..d0661724d 100644 --- a/src/slang-nodes/VersionExpression.ts +++ b/src/slang-nodes/VersionExpression.ts @@ -14,7 +14,7 @@ function createNonterminalVariant( return new VersionTerm(variant); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class VersionExpression extends SlangNode { diff --git a/src/slang-nodes/YulExpression.ts b/src/slang-nodes/YulExpression.ts index 66de092bd..dd697cc5c 100644 --- a/src/slang-nodes/YulExpression.ts +++ b/src/slang-nodes/YulExpression.ts @@ -23,7 +23,7 @@ function createNonterminalVariant( return new YulPath(variant); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class YulExpression extends SlangNode { diff --git a/src/slang-nodes/YulLiteral.ts b/src/slang-nodes/YulLiteral.ts index 72ef74856..a14f8ee5b 100644 --- a/src/slang-nodes/YulLiteral.ts +++ b/src/slang-nodes/YulLiteral.ts @@ -22,7 +22,7 @@ function createNonterminalVariant( return new StringLiteral(variant, options); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class YulLiteral extends SlangNode { diff --git a/src/slang-nodes/YulStatement.ts b/src/slang-nodes/YulStatement.ts index 6d711899c..88a693eb7 100644 --- a/src/slang-nodes/YulStatement.ts +++ b/src/slang-nodes/YulStatement.ts @@ -63,7 +63,7 @@ function createNonterminalVariant( return extractVariant(new YulExpression(variant, options)); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class YulStatement extends SlangNode { diff --git a/src/slang-nodes/YulSwitchCase.ts b/src/slang-nodes/YulSwitchCase.ts index 3c629e55b..aaba336e4 100644 --- a/src/slang-nodes/YulSwitchCase.ts +++ b/src/slang-nodes/YulSwitchCase.ts @@ -18,7 +18,7 @@ function createNonterminalVariant( return new YulValueCase(variant, options); } const exhaustiveCheck: never = variant; - return exhaustiveCheck; + throw new Error(`Unexpected variant: ${JSON.stringify(exhaustiveCheck)}`); } export class YulSwitchCase extends SlangNode {