Răsfoiți Sursa

fix errors in unused vars checking

Geequlim 8 ani în urmă
părinte
comite
9e8cfdd3e8
2 a modificat fișierele cu 8 adăugiri și 8 ștergeri
  1. 3 4
      src/gdscript/diagnostic.ts
  2. 5 4
      src/gdscript/symbolparser.ts

+ 3 - 4
src/gdscript/diagnostic.ts

@@ -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;    
   }
 

+ 5 - 4
src/gdscript/symbolparser.ts

@@ -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);