(node)
| 87698 | return false; |
| 87699 | } |
| 87700 | function checkGrammarModifiers(node) { |
| 87701 | var quickResult = reportObviousModifierErrors(node); |
| 87702 | if (quickResult !== undefined) { |
| 87703 | return quickResult; |
| 87704 | } |
| 87705 | var lastStatic, lastDeclare, lastAsync, lastOverride; |
| 87706 | var flags = 0 /* ModifierFlags.None */; |
| 87707 | for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) { |
| 87708 | var modifier = _a[_i]; |
| 87709 | if (modifier.kind !== 145 /* SyntaxKind.ReadonlyKeyword */) { |
| 87710 | if (node.kind === 166 /* SyntaxKind.PropertySignature */ || node.kind === 168 /* SyntaxKind.MethodSignature */) { |
| 87711 | return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_type_member, ts.tokenToString(modifier.kind)); |
| 87712 | } |
| 87713 | if (node.kind === 176 /* SyntaxKind.IndexSignature */ && (modifier.kind !== 124 /* SyntaxKind.StaticKeyword */ || !ts.isClassLike(node.parent))) { |
| 87714 | return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_an_index_signature, ts.tokenToString(modifier.kind)); |
| 87715 | } |
| 87716 | } |
| 87717 | if (modifier.kind !== 101 /* SyntaxKind.InKeyword */ && modifier.kind !== 144 /* SyntaxKind.OutKeyword */) { |
| 87718 | if (node.kind === 163 /* SyntaxKind.TypeParameter */) { |
| 87719 | return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_type_parameter, ts.tokenToString(modifier.kind)); |
| 87720 | } |
| 87721 | } |
| 87722 | switch (modifier.kind) { |
| 87723 | case 85 /* SyntaxKind.ConstKeyword */: |
| 87724 | if (node.kind !== 260 /* SyntaxKind.EnumDeclaration */) { |
| 87725 | return grammarErrorOnNode(node, ts.Diagnostics.A_class_member_cannot_have_the_0_keyword, ts.tokenToString(85 /* SyntaxKind.ConstKeyword */)); |
| 87726 | } |
| 87727 | break; |
| 87728 | case 159 /* SyntaxKind.OverrideKeyword */: |
| 87729 | // If node.kind === SyntaxKind.Parameter, checkParameter reports an error if it's not a parameter property. |
| 87730 | if (flags & 16384 /* ModifierFlags.Override */) { |
| 87731 | return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "override"); |
| 87732 | } |
| 87733 | else if (flags & 2 /* ModifierFlags.Ambient */) { |
| 87734 | return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "override", "declare"); |
| 87735 | } |
| 87736 | else if (flags & 64 /* ModifierFlags.Readonly */) { |
| 87737 | return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "override", "readonly"); |
| 87738 | } |
| 87739 | else if (flags & 256 /* ModifierFlags.Async */) { |
| 87740 | return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "override", "async"); |
| 87741 | } |
| 87742 | flags |= 16384 /* ModifierFlags.Override */; |
| 87743 | lastOverride = modifier; |
| 87744 | break; |
| 87745 | case 123 /* SyntaxKind.PublicKeyword */: |
| 87746 | case 122 /* SyntaxKind.ProtectedKeyword */: |
| 87747 | case 121 /* SyntaxKind.PrivateKeyword */: |
| 87748 | var text = visibilityToString(ts.modifierToFlag(modifier.kind)); |
| 87749 | if (flags & 28 /* ModifierFlags.AccessibilityModifier */) { |
| 87750 | return grammarErrorOnNode(modifier, ts.Diagnostics.Accessibility_modifier_already_seen); |
| 87751 | } |
| 87752 | else if (flags & 16384 /* ModifierFlags.Override */) { |
| 87753 | return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, text, "override"); |
| 87754 | } |
| 87755 | else if (flags & 32 /* ModifierFlags.Static */) { |
| 87756 | return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, text, "static"); |
| 87757 | } |
no test coverage detected
searching dependent graphs…