fix errors in unused vars checking

This commit is contained in:
Geequlim
2016-12-27 12:00:16 +08:00
parent 8e75aea144
commit 9e8cfdd3e8
2 changed files with 8 additions and 8 deletions

View File

@@ -37,7 +37,7 @@ class GDScriptDiagnosticSeverity {
this._subscription = vscode.languages.createDiagnosticCollection("gdscript")
}
dispose() {
dispose() {
this._subscription.dispose()
}
@@ -49,7 +49,6 @@ class GDScriptDiagnosticSeverity {
...(this.validateExpression(doc)),
...(this.validateUnusedSymbols(doc, script)),
];
// Update diagnostics
this._subscription.set(doc.uri, diagnostics);
}
}
@@ -58,7 +57,7 @@ class GDScriptDiagnosticSeverity {
private validateUnusedSymbols(doc: vscode.TextDocument,script) {
let diagnostics = [];
const text = doc.getText();
const check = (name:string, range: vscode.Range) => {
const pattern = `[\\s\\+\\-\\*/%\\^\\(\\[\\{]${name}[^0-9A-Za-z_]\\s*`;
var matchs = text.match(new RegExp(pattern, 'g'));
@@ -69,7 +68,7 @@ class GDScriptDiagnosticSeverity {
for (let key of Object.keys(script.variables))
check(key, script.variables[key]);
for (let key of Object.keys(script.constants))
check(key, script.variables[key]);
check(key, script.constants[key]);
return diagnostics;
}

View File

@@ -42,6 +42,7 @@ class GDScriptSymbolParser {
symbols.map((name:string)=>{
let line = 0;
let curline = 0;
if(Object.keys(sm).indexOf(name) != -1) return;
lines.map(l=>{
const nreg = reg.replace("$X$", name);
if(l.match(nreg) != null) {
@@ -63,13 +64,13 @@ class GDScriptSymbolParser {
return new Range(line, startAt, line, startAt + key.length);
};
let funcsnames = getMatches(text, /func\s+([_A-Za-z]+[_A-Za-z0-9]*)\s*\(.*\)/g, 1);
const funcs = findLineRanges(funcsnames, "func\\s+$X$\\s*\\(.*\\)");
let funcsnames = getMatches(text, /func\s+([_A-Za-z]+[_A-Za-z0-9]*)\s*\(/g, 1);
const funcs = findLineRanges(funcsnames, "func\\s+$X$\\s*\\(");
for (let key of Object.keys(funcs))
script.functions[key] = determRange(key, funcs);
let signalnames = getMatches(text, /signal\s+([_A-Za-z]+[_A-Za-z0-9]*)\s*\(.*\)/g, 1);
const signals = findLineRanges(signalnames, "signal\\s+$X$\\s*\\(.*\\)");
let signalnames = getMatches(text, /signal\s+([_A-Za-z]+[_A-Za-z0-9]*)\s*\(/g, 1);
const signals = findLineRanges(signalnames, "signal\\s+$X$\\s*\\(");
for (let key of Object.keys(signals))
script.signals[key] = determRange(key, signals);