From 92e87014d948f937822dfb6543fa480ae2388caa Mon Sep 17 00:00:00 2001 From: AlexHaxe Date: Sat, 19 Mar 2016 01:43:58 +0100 Subject: [PATCH] removed WhitespaceCheck --- resources/default-config.json | 24 -- .../whitespace/OperatorWhitespaceCheck.hx | 18 +- .../checks/whitespace/WhitespaceCheck.hx | 268 ------------------ test/checks/whitespace/WhitespaceCheckTest.hx | 256 ----------------- 4 files changed, 16 insertions(+), 550 deletions(-) delete mode 100644 src/checkstyle/checks/whitespace/WhitespaceCheck.hx delete mode 100644 test/checks/whitespace/WhitespaceCheckTest.hx diff --git a/resources/default-config.json b/resources/default-config.json index aee4356a..8ff4136e 100644 --- a/resources/default-config.json +++ b/resources/default-config.json @@ -560,30 +560,6 @@ }, "type": "VariableInitialisation" }, - { - "props": { - "mode": "around", - "tokens": [ - "=>" - ], - "contexts": [ - "Object", - "Function", - "Field", - "Switch", - "Switch", - "Array", - "Block", - "Class", - "Interface", - "Typedef", - "Abstract", - "Enum" - ], - "severity": "IGNORE" - }, - "type": "Whitespace" - }, { "props": { "tokens": [ diff --git a/src/checkstyle/checks/whitespace/OperatorWhitespaceCheck.hx b/src/checkstyle/checks/whitespace/OperatorWhitespaceCheck.hx index 10b26784..770ecc51 100644 --- a/src/checkstyle/checks/whitespace/OperatorWhitespaceCheck.hx +++ b/src/checkstyle/checks/whitespace/OperatorWhitespaceCheck.hx @@ -3,8 +3,6 @@ package checkstyle.checks.whitespace; import checkstyle.Checker.LinePos; import checkstyle.token.TokenTree; import checkstyle.utils.TokenTreeCheckUtils; -import checkstyle.checks.whitespace.WhitespaceCheck.WhitespacePolicy; -import checkstyle.checks.whitespace.WhitespaceCheck.WhitespaceUnaryPolicy; import haxeparser.Data; import haxe.macro.Expr; @@ -215,4 +213,20 @@ class OperatorWhitespaceCheck extends Check { } logPos('OperatorWhitespace policy "$policy" violated by "${TokenDefPrinter.print(tok.tok)}"', tok.pos); } +} + +@:enum +abstract WhitespacePolicy(String) { + var BEFORE = "before"; + var AFTER = "after"; + var AROUND = "around"; + var NONE = "none"; + var IGNORE = "ignore"; +} + +@:enum +abstract WhitespaceUnaryPolicy(String) { + var INNER = "inner"; + var NONE = "none"; + var IGNORE = "ignore"; } \ No newline at end of file diff --git a/src/checkstyle/checks/whitespace/WhitespaceCheck.hx b/src/checkstyle/checks/whitespace/WhitespaceCheck.hx deleted file mode 100644 index 574c791c..00000000 --- a/src/checkstyle/checks/whitespace/WhitespaceCheck.hx +++ /dev/null @@ -1,268 +0,0 @@ -package checkstyle.checks.whitespace; - -import checkstyle.Checker.LinePos; -import checkstyle.token.TokenTree; -import checkstyle.utils.TokenTreeCheckUtils; -import haxeparser.Data; -import haxe.macro.Expr; - -using checkstyle.utils.ArrayUtils; - -@name("Whitespace") -@desc("Checks that is present or absent around a token.") -class WhitespaceCheck extends Check { - - public var mode:WhitespaceMode; - public var tokens:Array; - public var contexts:Array; - - public function new() { - super(TOKEN); - tokens = [ - ARROW, - ]; - mode = AROUND; - contexts = [OBJECT_DECL, FUNCTION, FIELD, SWITCH, TRY_CATCH, ARRAY_ACCESS, BLOCK, CLASS, INTERFACE, TYPEDEF, ABSTRACT, ENUM]; - - categories = [Category.STYLE, Category.CLARITY]; - } - - override function actualRun() { - var tokenList:Array = []; - - for (token in tokens) { - switch (token) { - case ARROW: - tokenList.push(Arrow); - case COMMA: - tokenList.push(Comma); - case SEMICOLON: - tokenList.push(Semicolon); - case POPEN: - tokenList.push(POpen); - case PCLOSE: - tokenList.push(PClose); - case BROPEN: - tokenList.push(BrOpen); - case BRCLOSE: - tokenList.push(BrClose); - case BKOPEN: - tokenList.push(BkOpen); - case BKCLOSE: - tokenList.push(BkClose); - case DBLDOT: - tokenList.push(DblDot); - case DOT: - tokenList.push(Dot); - } - } - - if (tokenList.length <= 0) return; - checkTokens(tokenList); - } - - function checkTokens(tokenList:Array) { - var root:TokenTree = checker.getTokenTree(); - var allTokens:Array = root.filter(tokenList, ALL); - - for (tok in allTokens) { - if (isPosSuppressed(tok.pos)) continue; - if (!checkContext(tok)) continue; - - checkWhitespace(tok); - } - } - - function checkWhitespace(tok:TokenTree) { - var linePos:LinePos = checker.getLinePos(tok.pos.min); - var line:String = checker.lines[linePos.line]; - var before:String = line.substr(0, linePos.ofs); - var tokLen:Int = TokenDefPrinter.print(tok.tok).length; - var after:String = line.substr(linePos.ofs + tokLen); - - var whitespaceBefore:Bool = ~/^(.*\s|)$/.match(before); - var whitespaceAfter:Bool = ~/^(\s.*|)$/.match(after); - - switch (mode) { - case BEFORE: - if (whitespaceBefore && !whitespaceAfter) return; - case AFTER: - if (!whitespaceBefore && whitespaceAfter) return; - case NONE: - if (!whitespaceBefore && !whitespaceAfter) return; - case AROUND: - if (whitespaceBefore && whitespaceAfter) return; - } - - logPos('Whitespace mode "$mode" violated by "${TokenDefPrinter.print(tok.tok)}"', tok.pos); - } - - function checkContext(token:TokenTree):Bool { - // TODO also handle package and using - if (TokenTreeCheckUtils.isImportMult(token)) return false; - if (TokenTreeCheckUtils.filterOpSub(token)) return false; - - var currentContext:WhitespaceContext = determineContext(token); - if (currentContext == null || !hasContext(currentContext)) return false; - - //if (TokenTreeCheckUtils.isTypeParameter(token)) { - // return hasContext(TYPE_PARAMETER); - //} - //if (!hasContext(FUNCTION)) { - // if (isFunctionContext(token)) return true; - //} - switch (token.tok) { - case Dot: - case DblDot: - default: - } - // TODO check contexts - - return true; - } - - function isFunctionContext(tok:TokenTree):Bool { - switch (tok.tok) { - case POpen, PClose, DblDot, Dot, Comma, BrOpen, BrClose: - case Binop(OpGt), Binop(OpLt), Binop(OpAssign): - default: return false; - } - var parent:TokenTree = tok.parent; - while (parent.tok != null) { - switch (parent.tok) { - case Kwd(KwdFunction): return true; - case Kwd(_): return false; - default: - } - parent = parent.parent; - } - return false; - } - - function determineContext(token:TokenTree):WhitespaceContext { - while (token.tok != null) { - switch (token.tok) { - case At: return META; - case Dollar(_): return REIFICATION; - case Kwd(KwdClass): return CLASS; - case Kwd(KwdInterface): return INTERFACE; - case Kwd(KwdEnum): return ENUM; - case Kwd(KwdAbstract): return ABSTRACT; - case Kwd(KwdTypedef): return TYPEDEF; - case Kwd(KwdCase), Kwd(KwdDefault), Kwd(KwdSwitch): return SWITCH; - case Kwd(KwdCatch): return TRY_CATCH; - - case Kwd(KwdIf), Kwd(KwdElse): return SINGLELINE; - case Kwd(KwdDo): return SINGLELINE; - case Kwd(KwdFor): return SINGLELINE; - case Kwd(KwdWhile): return SINGLELINE; - case Kwd(KwdFunction): return SINGLELINE; - case BkOpen: return ARRAY_ACCESS; - case BrOpen: return contextOfBrOpen(token.parent); - case POpen: return contextOfPOpen(token.parent); - case Binop(OpLt): - if (TokenTreeCheckUtils.isTypeParameter(token)) return TYPE_PARAMETER; - default: - } - token = token.parent; - } - - return null; - } - - function contextOfBrOpen(token:TokenTree):WhitespaceContext { - while (token.tok != null) { - switch (token.tok) { - case Kwd(_): return BLOCK; - case POpen: return OBJECT_DECL; - case Comma: return OBJECT_DECL; - case BrOpen: return contextOfBrOpen(token.parent); - case Binop(OpAssign), Binop(OpAssignOp(_)): return OBJECT_DECL; - default: - } - token = token.parent; - } - return null; - } - - function contextOfPOpen(token:TokenTree):WhitespaceContext { - while (token.tok != null) { - switch (token.tok) { - case Kwd(KwdFunction): return FUNCTION; - case POpen: return contextOfPOpen(token); - case Binop(OpAssign), Binop(OpAssignOp(_)): return COND; - case Kwd(KwdVar): return PROPERTY; - case Kwd(KwdIf), Kwd(KwdFor), Kwd(KwdWhile), Kwd(KwdSwitch), Kwd(KwdCase): return COND; - default: - } - token = token.parent; - } - return null; - } - - function hasContext(context:WhitespaceContext):Bool { - return contexts.contains(context); - } -} - -@:enum -abstract WhitespaceMode(String) { - var BEFORE = "before"; - var AFTER = "after"; - var AROUND = "around"; - var NONE = "none"; -} - -@:enum -abstract WhitespaceContext(String) { - var OBJECT_DECL = "Object"; - var CLASS = "Class"; - var INTERFACE = "Interface"; - var TYPEDEF = "Typedef"; - var ABSTRACT = "Abstract"; - var ENUM = "Enum"; - var FUNCTION = "Function"; - var FIELD = "Field"; - var PROPERTY = "Property"; - var BLOCK = "Block"; - var IF = "If"; - var COND = "Condition"; - var SWITCH = "Switch"; - var TRY_CATCH = "Switch"; - var ARRAY_ACCESS = "Array"; - var REIFICATION = "Reification"; - var TYPE_PARAMETER = "TypeParameter"; - var META = "Meta"; - var SINGLELINE = "Singleline"; -} - -@:enum -abstract WhitespaceToken(String) { - var ARROW = "=>"; - var COMMA = ","; - var SEMICOLON = ";"; - var POPEN = "("; - var PCLOSE = ")"; - var BROPEN = "{"; - var BRCLOSE = "}"; - var BKOPEN = "["; - var BKCLOSE = "]"; - var DBLDOT = ":"; - var DOT = "."; -} - -@:enum -abstract WhitespacePolicy(String) { - var BEFORE = "before"; - var AFTER = "after"; - var AROUND = "around"; - var NONE = "none"; - var IGNORE = "ignore"; -} - -@:enum -abstract WhitespaceUnaryPolicy(String) { - var INNER = "inner"; - var NONE = "none"; - var IGNORE = "ignore"; -} \ No newline at end of file diff --git a/test/checks/whitespace/WhitespaceCheckTest.hx b/test/checks/whitespace/WhitespaceCheckTest.hx deleted file mode 100644 index a5621455..00000000 --- a/test/checks/whitespace/WhitespaceCheckTest.hx +++ /dev/null @@ -1,256 +0,0 @@ -package checks.whitespace; - -import checkstyle.checks.whitespace.WhitespaceCheck; - -class WhitespaceCheckTest extends CheckTestCase { - - static inline var MSG_EQUALS:String = 'Whitespace mode "around" violated by "="'; - - public function testCorrectWhitespace() { - var check = new WhitespaceCheck(); - assertNoMsg(check, CORRECT_WHITESPACE_AROUND); - assertNoMsg(check, ISSUE_70); - assertNoMsg(check, ISSUE_71); - assertNoMsg(check, ISSUE_72); - assertNoMsg(check, ISSUE_77); - assertNoMsg(check, ISSUE_80); - assertNoMsg(check, ISSUE_81); - assertNoMsg(check, ISSUE_98); - assertNoMsg(check, MINUS_CONSTANT); - assertNoMsg(check, CONDITIONAL_STAR_IMPORT_ISSUE_160); - assertNoMsg(check, CONDITIONAL_ELSE_STAR_IMPORT); - assertNoMsg(check, CONDITIONAL_ELSEIF_STAR_IMPORT); - assertNoMsg(check, NEGATIVE_VARS); - assertNoMsg(check, NEGATIVE_NUMS); - assertNoMsg(check, OPGT); - } - - //public function testIncorrectWhitespace() { - // var check = new WhitespaceCheck(); - // assertMsg(check, NO_WHITESPACE_OBJECT_DECL, MSG_EQUALS); - // assertMsg(check, NO_WHITESPACE_TYPEDEF, MSG_EQUALS); - // assertMsg(check, ISSUE_59, MSG_EQUALS); - // assertMsg(check, ISSUE_63, MSG_EQUALS); - //} - - //public function testIncorrectWhitespaceToken() { - // var check = new WhitespaceCheck(); - // assertNoMsg(check, CORRECT_WHITESPACE_AROUND); - // assertMsg(check, NO_WHITESPACE_GT, MSG_EQUALS); - // assertMsg(check, NO_WHITESPACE_OBJECT_DECL, MSG_EQUALS); - // assertMsg(check, NO_WHITESPACE_TYPEDEF, MSG_EQUALS); - // assertMsg(check, NO_WHITESPACE_VAR_INIT, MSG_EQUALS); - - // assertNoMsg(check, CORRECT_WHITESPACE_AROUND); - // assertNoMsg(check, NO_WHITESPACE_VAR_INIT); - // assertNoMsg(check, NO_WHITESPACE_GT); - //} - - public function testStarImport() { - var check = new WhitespaceCheck(); - assertNoMsg(check, ISSUE_70); - assertNoMsg(check, CONDITIONAL_STAR_IMPORT_ISSUE_160); - assertNoMsg(check, CONDITIONAL_ELSE_STAR_IMPORT); - assertNoMsg(check, CONDITIONAL_ELSEIF_STAR_IMPORT); - } -} - -@:enum -abstract WhitespaceCheckTests(String) to String { - var CORRECT_WHITESPACE_AROUND = " - import haxe.macro.*; - - class Test { - function test(param1:String, param2:String) { - var x = { x: 100, y: 100, - z: 20 * 10 - }; - var y:Array = []; - } - } - - typedef Test = { - x:Int, - y:Int, z:Int - } - - enum Test { - Monday; - Tuesday; - Wednesday; - Thursday; - Friday; Weekend(day:String); - }"; - - var NO_WHITESPACE_OBJECT_DECL = " - class Test { - function test(param1:String, param2:String) { - var x={ x: 100, y: 100,z: 20 }; - } - }"; - - var NO_WHITESPACE_TYPEDEF = " - typedef Test ={ - x:Int, - y:Int,z:Int - }"; - - var NO_WHITESPACE_VAR_INIT = " - class Test { - function test(param1:String, param2:String) { - var test:Array=[]; - } - }"; - - var NO_WHITESPACE_GT = " - class Test { - function test(param1:String, param2:String) { - var test:Array= []; - } - }"; - - var ISSUE_58 = " - class Test { - public function new() { - var x:Int, y:Int; - } - }"; - - var ISSUE_59 = " - typedef Test=Int - "; - - var ISSUE_63 = " - typedef Test =#if true Int #else String #end - "; - - var ISSUE_70 = " - import haxe.macro.*; - "; - - var ISSUE_71 = " - class Test { - function foo() { - trace((null : Array)); - } - }"; - - var ISSUE_72 = " - abstract Test(Array) {} - "; - - var ISSUE_77 = " - // comment - class Test // comment - { // comment - function foo() // comment - { // comment - switch ('Test') // comment - { // comment - } // comment - } // comment - } // comment - "; - - var ISSUE_80 = " - interface Test implements Dynamic {} - "; - - var ISSUE_81 = " - class Test { - function foo() { - do a++ while (true); - do ++a while (true); - } - }"; - - var ISSUE_98 = " - class Test { - // °öäüßÖÄÜ@łĸŋđđðſðæµ”“„¢«»Ø→↓←Ŧ¶€Ł}][{¬½¼³² - var test:Int = 0; - }"; - - var MINUS_CONSTANT = " - class Test { - function test() { - if (re.match(line) && line.indexOf('//') == -1) { - log('Tab after non-space character, Use space for aligning', i + 1, line.length, null, Reflect.field(SeverityLevel, severity)); - return -1; - } - a = 1 - -2; - b = 1.2 - -2.1; - return -1; - } - }"; - - var CONDITIONAL_STAR_IMPORT_ISSUE_160 = " - #if macro - import haxe.macro.*; - #end"; - - var CONDITIONAL_ELSEIF_STAR_IMPORT = " - #if macro - import haxe.macro.Type; - #elseif neko - import haxe.macro.*; - #elseif neko - import haxe.macro.*; - #else - #if linux - import haxe.macro.Type; - #else - import haxe.macro.*; - #end - #end - import haxe.macro.Type;"; - - var CONDITIONAL_ELSE_STAR_IMPORT = " - #if macro - import haxe.macro.Type; - #else - import haxe.macro.*; - #end - import haxe.macro.Type;"; - - var NEGATIVE_VARS = " - class Test { - function test() { - var rest = if (neg) { -noFractions; } - else { -noFractions; } - var rest = if (neg) -noFractions; - else -noFractions; - var x = neg ? -frag : -frag; - calc ([-width, -node.right, root], -node.left, {x : -x, y: -y}); - (-a); - (1 * -a); - do -a * 2 while(true); - for (a in [-1, -2]) -a + 2; - return -a; - } - }"; - - var NEGATIVE_NUMS = " - class Test { - function test() { - var rest = if (neg) { -8; } - else { -9; } - var rest = if (neg) -10; - else -11; - var x = neg ? -12 : -13; - calc ([-14, -node.right, root], -node.left, {x : -xi15x, y: -16}); - (-16); - (1 * -17); - do -18 * 2 while(true); - for (a in [-1, -2]) -18 + 2; - } - }"; - - var OPGT = " - class Test { - function test() { - if (a > b) return a >= b; - if (a >> b > c) return a >>= b; - if (a >>> b > c) return a >>>= b; - } - }"; -} \ No newline at end of file