Skip to content
This repository has been archived by the owner on Mar 25, 2021. It is now read-only.

Commit

Permalink
Fix preferConstRule failing with older TypeScript versions
Browse files Browse the repository at this point in the history
  • Loading branch information
connor4312 committed Dec 28, 2016
1 parent 6c81ad8 commit 8ff4be7
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
15 changes: 15 additions & 0 deletions src/language/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -197,3 +197,18 @@ export function unwrapParentheses(node: ts.Expression) {
}
return node;
}

/**
* Shim to look up NodeFlags ir ModifierFlags depending on the TypeScript
* version, emitting a runtime error if neither can be found.
*/
export function getNodeOrModifierTag(name: string): number {
if (name in ts.ModifierFlags) {
return (<any> ts.ModifierFlags)[name];
}
if (name in ts.NodeFlags) {
return (<any> ts.NodeFlags)[name];
}

throw new Error(`Cannot find tag "${name}" in either ts.ModifierFlags or ts.NodeFlags`);
}
10 changes: 8 additions & 2 deletions src/rules/preferConstRule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,13 @@

import * as ts from "typescript";
import * as Lint from "../index";
import {isAssignment, isCombinedModifierFlagSet, isCombinedNodeFlagSet, unwrapParentheses} from "../language/utils";
import {
getNodeOrModifierTag,
isAssignment,
isCombinedModifierFlagSet,
isCombinedNodeFlagSet,
unwrapParentheses
} from '../language/utils';

export class Rule extends Lint.Rules.AbstractRule {
/* tslint:disable:object-literal-sort-keys */
Expand Down Expand Up @@ -54,7 +60,7 @@ class PreferConstWalker extends Lint.BlockScopeAwareRuleWalker<{}, ScopeInfo> {
}

private static collectInVariableDeclarationList(node: ts.VariableDeclarationList, scopeInfo: ScopeInfo) {
if (isCombinedNodeFlagSet(node, ts.NodeFlags.Let) && !isCombinedModifierFlagSet(node, ts.ModifierFlags.Export)) {
if (isCombinedNodeFlagSet(node, ts.NodeFlags.Let) && !isCombinedModifierFlagSet(node, getNodeOrModifierTag('Export'))) {
for (const decl of node.declarations) {
PreferConstWalker.addDeclarationName(decl.name, node, scopeInfo);
}
Expand Down

0 comments on commit 8ff4be7

Please sign in to comment.