.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / tslint / lib / language / walker / scopeAwareRuleWalker.d.ts
1 /**
2  * @license
3  * Copyright 2013 Palantir Technologies, Inc.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 import * as ts from "typescript";
18 import { IOptions } from "../rule/rule";
19 import { RuleWalker } from "./ruleWalker";
20 /**
21  * @deprecated Prefer to manually maintain any contextual information.
22  *
23  * For example, imagine a `no-break` rule that warns on `break` in `for` but not in `switch`:
24  *
25  * function walk(ctx: Lint.WalkContext): void {
26  *     let isInFor = false;
27  *     ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
28  *         switch (node.kind) {
29  *             case ts.SyntaxKind.Break:
30  *                 if (isInFor) {
31  *                     ctx.addFailureAtNode(node, "!");
32  *                 }
33  *                 break;
34  *             case ts.SyntaxKind.ForStatement: {
35  *                 const old = isInFor;
36  *                 isInFor = true;
37  *                 ts.forEachChild(node, cb);
38  *                 isInFor = old;
39  *                 break;
40  *             }
41  *             case ts.SyntaxKind.SwitchStatement: {
42  *                 const old = isInFor;
43  *                 isInFor = false;
44  *                 ts.forEachChild(node, cb);
45  *                 isInFor = old;
46  *                 break;
47  *             }
48  *             default:
49  *                 ts.forEachChild(node, cb);
50  *         }
51  *     });
52  * }
53  */
54 export declare abstract class ScopeAwareRuleWalker<T> extends RuleWalker {
55     private readonly scopeStack;
56     constructor(sourceFile: ts.SourceFile, options: IOptions);
57     abstract createScope(node: ts.Node): T;
58     getCurrentScope(): T;
59     getAllScopes(): T[];
60     getCurrentDepth(): number;
61     onScopeStart(): void;
62     onScopeEnd(): void;
63     protected visitNode(node: ts.Node): void;
64     protected isScopeBoundary(node: ts.Node): boolean;
65 }