apply Dscanner on the label ana module

This commit is contained in:
Basile Burg 2016-12-24 07:35:06 +01:00
parent e8c848352e
commit e5708325c1
No known key found for this signature in database
GPG Key ID: 1868039F415CB8CF
1 changed files with 11 additions and 7 deletions

View File

@ -4,16 +4,20 @@
module analysis.unused_label; module analysis.unused_label;
import dparse.ast;
import dparse.lexer;
import analysis.base; import analysis.base;
import analysis.helpers; import analysis.helpers;
import dparse.ast;
import dparse.lexer;
import dsymbol.scope_ : Scope; import dsymbol.scope_ : Scope;
class UnusedLabelCheck : BaseAnalyzer /**
* Checks for labels that are never used.
*/
final class UnusedLabelCheck : BaseAnalyzer
{ {
alias visit = BaseAnalyzer.visit; alias visit = BaseAnalyzer.visit;
///
this(string fileName, const(Scope)* sc, bool skipTests = false) this(string fileName, const(Scope)* sc, bool skipTests = false)
{ {
super(fileName, sc, skipTests); super(fileName, sc, skipTests);
@ -101,10 +105,10 @@ class UnusedLabelCheck : BaseAnalyzer
return; return;
const AsmExp e = cast(AsmExp) instr.operands.operands[0]; const AsmExp e = cast(AsmExp) instr.operands.operands[0];
if (e.left && cast(const(AsmBrExp)) e.left) if (e.left && cast(AsmBrExp) e.left)
{ {
const AsmBrExp b = cast(AsmBrExp) e.left; const AsmBrExp b = cast(AsmBrExp) e.left;
if (b.asmUnaExp && b.asmUnaExp.asmPrimaryExp) if (b && b.asmUnaExp && b.asmUnaExp.asmPrimaryExp)
{ {
const AsmPrimaryExp p = b.asmUnaExp.asmPrimaryExp; const AsmPrimaryExp p = b.asmUnaExp.asmPrimaryExp;
if (p && p.identifierChain && p.identifierChain.identifiers.length == 1) if (p && p.identifierChain && p.identifierChain.identifiers.length == 1)
@ -125,7 +129,7 @@ private:
Label[string][] stack; Label[string][] stack;
auto ref current() @property auto ref current()
{ {
return stack[$ - 1]; return stack[$ - 1];
} }
@ -161,7 +165,7 @@ private:
unittest unittest
{ {
import analysis.config : StaticAnalysisConfig, Check; import analysis.config : Check, StaticAnalysisConfig;
import std.stdio : stderr; import std.stdio : stderr;
StaticAnalysisConfig sac; StaticAnalysisConfig sac;