Skip to content

Commit

Permalink
Chore: fix invalid super() calls in tests (#11054)
Browse files Browse the repository at this point in the history
Acorn now reports parsing errors for invalid uses of the `super` keyword, and some tests are failing on master as a result. This commit updates the affected tests as necessary (or removes them if they're no longer applicable).
  • Loading branch information
not-an-aardvark committed Nov 6, 2018
1 parent 4fe3287 commit 0800b20
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 49 deletions.
2 changes: 1 addition & 1 deletion tests/lib/linter.js
Expand Up @@ -3396,7 +3396,7 @@ describe("Linter", () => {
"var u = /^.$/u.test('𠮷');",
"var y = /hello/y.test('hello');",
"function restParam(a, ...rest) {}",
"function superInFunc() { super.foo(); }",
"class B { superInFunc() { super.foo(); } }",
"var template = `hello, ${a}`;",
"var unicode = '\\u{20BB7}';"
].join("\n");
Expand Down
17 changes: 2 additions & 15 deletions tests/lib/rules/constructor-super.js
Expand Up @@ -46,10 +46,6 @@ ruleTester.run("constructor-super", rule, {
"class A extends B { constructor() { super(); class C extends D { constructor() { super(); } } } }",
"class A extends B { constructor() { super(); class C { constructor() { } } } }",

// ignores out of constructors.
"class A { b() { super(); } }",
"function a() { super(); }",

// multi code path.
"class A extends B { constructor() { a ? super() : super(); } }",
"class A extends B { constructor() { if (a) super(); else super(); } }",
Expand Down Expand Up @@ -78,9 +74,6 @@ ruleTester.run("constructor-super", rule, {
"}"
].join("\n"),

// https://github.com/eslint/eslint/issues/5894
"class A { constructor() { return; super(); } }",

// https://github.com/eslint/eslint/issues/8848
`
class A extends B {
Expand All @@ -99,12 +92,6 @@ ruleTester.run("constructor-super", rule, {
],
invalid: [

// non derived classes.
{
code: "class A { constructor() { super(); } }",
errors: [{ messageId: "unexpected", type: "CallExpression" }]
},

// inherit from non constructors.
{
code: "class A extends null { constructor() { super(); } }",
Expand Down Expand Up @@ -135,11 +122,11 @@ ruleTester.run("constructor-super", rule, {

// nested execution scope.
{
code: "class A extends B { constructor() { function c() { super(); } } }",
code: "class A extends B { constructor() { class C extends D { constructor() { super(); } } } }",
errors: [{ messageId: "missingAll", type: "MethodDefinition" }]
},
{
code: "class A extends B { constructor() { var c = function() { super(); } } }",
code: "class A extends B { constructor() { var c = class extends D { constructor() { super(); } } } }",
errors: [{ messageId: "missingAll", type: "MethodDefinition" }]
},
{
Expand Down
60 changes: 30 additions & 30 deletions tests/lib/rules/keyword-spacing.js
Expand Up @@ -932,62 +932,62 @@ ruleTester.run("keyword-spacing", rule, {
// super
//----------------------------------------------------------------------

{ code: "class A { a() { {} super[b](); } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A { a() { {}super[b](); } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },
{ code: "class A { a() { {} super[b](); } }", options: [override("super", BOTH)], parserOptions: { ecmaVersion: 6 } },
{ code: "class A { a() { {}super[b](); } }", options: [override("super", NEITHER)], parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { a() { {} super[b](); } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { a() { {}super[b](); } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { a() { {} super[b](); } }", options: [override("super", BOTH)], parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { a() { {}super[b](); } }", options: [override("super", NEITHER)], parserOptions: { ecmaVersion: 6 } },

// not conflict with `array-bracket-spacing`
{ code: "class A { a() { [super()]; } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A { a() { [ super() ]; } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { [super()]; } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { [ super() ]; } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },

// not conflict with `arrow-spacing`
{ code: "class A { a() { () =>super(); } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A { a() { () => super(); } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { () =>super(); } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { () => super(); } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },

// not conflict with `block-spacing`
{ code: "class A { a() {super()} }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A { a() { super() } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() {super()} }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { super() } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },

// not conflict with `comma-spacing`
{ code: "class A { a() { (0,super()) } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A { a() { (0, super()) } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { (0,super()) } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { (0, super()) } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },

// not conflict with `computed-property-spacing`
{ code: "class A { a() { ({[super()]: 0}) } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A { a() { ({[ super() ]: 0}) } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { ({[super()]: 0}) } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { ({[ super() ]: 0}) } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },

// not conflict with `key-spacing`
{ code: "class A { a() { ({a:super() }) } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A { a() { ({a: super() }) } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { ({a:super() }) } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { ({a: super() }) } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },

// not conflict with `func-call-spacing`
{ code: "class A { constructor() { super(); } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A { constructor() { super (); } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { super(); } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { super (); } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },

// not conflict with `semi-spacing`
{ code: "class A { a() { ;super(); } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A { a() { ; super() ; } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { ;super(); } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { ; super() ; } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },

// not conflict with `space-in-parens`
{ code: "class A { a() { (super()) } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A { a() { ( super() ) } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { (super()) } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { ( super() ) } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },

// not conflict with `space-infix-ops`
{ code: "class A { a() { b =super() } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A { a() { b = super() } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { b =super() } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { b = super() } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },

// not conflict with `space-unary-ops`
{ code: "class A { a() { !super() } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A { a() { ! super() } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { !super() } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { ! super() } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },

// not conflict with `template-curly-spacing`
{ code: "class A { a() { `${super()}` } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A { a() { `${ super() }` } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { `${super()}` } }", parserOptions: { ecmaVersion: 6 } },
{ code: "class A extends B { constructor() { `${ super() }` } }", options: [NEITHER], parserOptions: { ecmaVersion: 6 } },

// not conflict with `jsx-curly-spacing`
{ code: "class A { a() { <Foo onClick={super()} /> } }", parserOptions: { ecmaVersion: 6, ecmaFeatures: { jsx: true } } },
{ code: "class A { a() { <Foo onClick={ super() } /> } }", options: [NEITHER], parserOptions: { ecmaVersion: 6, ecmaFeatures: { jsx: true } } },
{ code: "class A extends B { constructor() { <Foo onClick={super()} /> } }", parserOptions: { ecmaVersion: 6, ecmaFeatures: { jsx: true } } },
{ code: "class A extends B { constructor() { <Foo onClick={ super() } /> } }", options: [NEITHER], parserOptions: { ecmaVersion: 6, ecmaFeatures: { jsx: true } } },

//----------------------------------------------------------------------
// switch
Expand Down
1 change: 0 additions & 1 deletion tests/lib/rules/no-useless-constructor.js
Expand Up @@ -23,7 +23,6 @@ ruleTester.run("no-useless-constructor", rule, {
valid: [
"class A { }",
"class A { constructor(){ doSomething(); } }",
"class A { constructor(){ super('foo'); } }",
"class A extends B { constructor(){} }",
"class A extends B { constructor(){ super('foo'); } }",
"class A extends B { constructor(foo, bar){ super(foo, bar, 1); } }",
Expand Down
2 changes: 0 additions & 2 deletions tests/lib/rules/prefer-arrow-callback.js
Expand Up @@ -38,8 +38,6 @@ ruleTester.run("prefer-arrow-callback", rule, {
"foo(function bar() { bar; });",
"foo(function bar() { arguments; });",
"foo(function bar() { arguments; }.bind(this));",
"foo(function bar() { super.a; });",
"foo(function bar() { super.a; }.bind(this));",
"foo(function bar() { new.target; });",
"foo(function bar() { new.target; }.bind(this));",
"foo(function bar() { this; }.bind(this, somethingElse));"
Expand Down

0 comments on commit 0800b20

Please sign in to comment.