mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-25 15:12:12 +00:00
37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const ts = require("typescript");
|
|
const Lint = require("tslint");
|
|
const tsutils_1 = require("tsutils");
|
|
class Rule extends Lint.Rules.AbstractRule {
|
|
apply(sourceFile) {
|
|
return this.applyWithWalker(new CaseWalker(sourceFile, this.getOptions()));
|
|
}
|
|
}
|
|
Rule.NOT_BRACED = "Multi-line case clauses should be braced.";
|
|
exports.Rule = Rule;
|
|
class CaseWalker extends Lint.RuleWalker {
|
|
visitDefaultClause(node) {
|
|
this.checkDefaultOrCaseClause(node);
|
|
super.visitDefaultClause(node);
|
|
}
|
|
visitCaseClause(node) {
|
|
this.checkDefaultOrCaseClause(node);
|
|
super.visitCaseClause(node);
|
|
}
|
|
checkDefaultOrCaseClause(node) {
|
|
var count = node.statements.length;
|
|
if (count > 1) {
|
|
this.addFailureAtNode(node, Rule.NOT_BRACED);
|
|
}
|
|
else if (count == 1) {
|
|
let stmt = node.statements[0];
|
|
if (stmt.kind != ts.SyntaxKind.Block) {
|
|
if (!tsutils_1.isSameLine(node.getSourceFile(), node.getStart(), stmt.getStart())) {
|
|
this.addFailureAtNode(node, Rule.NOT_BRACED);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|