Index: test/cctest/test-parsing.cc |
diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc |
index f0abbc958f9a241f2270bc85864db9561817c34b..872bdf5a26e09fbad18a7e6760af3caa68dd0ccd 100644 |
--- a/test/cctest/test-parsing.cc |
+++ b/test/cctest/test-parsing.cc |
@@ -961,56 +961,54 @@ TEST(ScopeUsesArgumentsSuperThis) { |
SUPER_PROPERTY = 1 << 1, |
THIS = 1 << 2, |
INNER_ARGUMENTS = 1 << 3, |
- INNER_SUPER_PROPERTY = 1 << 4, |
}; |
static const struct { |
const char* body; |
int expected; |
} source_data[] = { |
- {"", NONE}, |
- {"return this", THIS}, |
- {"return arguments", ARGUMENTS}, |
- {"return super.x", SUPER_PROPERTY}, |
- {"return arguments[0]", ARGUMENTS}, |
- {"return this + arguments[0]", ARGUMENTS | THIS}, |
- {"return this + arguments[0] + super.x", |
- ARGUMENTS | SUPER_PROPERTY | THIS}, |
- {"return x => this + x", THIS}, |
- {"return x => super.f() + x", INNER_SUPER_PROPERTY}, |
- {"this.foo = 42;", THIS}, |
- {"this.foo();", THIS}, |
- {"if (foo()) { this.f() }", THIS}, |
- {"if (foo()) { super.f() }", SUPER_PROPERTY}, |
- {"if (arguments.length) { this.f() }", ARGUMENTS | THIS}, |
- {"while (true) { this.f() }", THIS}, |
- {"while (true) { super.f() }", SUPER_PROPERTY}, |
- {"if (true) { while (true) this.foo(arguments) }", ARGUMENTS | THIS}, |
- // Multiple nesting levels must work as well. |
- {"while (true) { while (true) { while (true) return this } }", THIS}, |
- {"while (true) { while (true) { while (true) return super.f() } }", |
- SUPER_PROPERTY}, |
- {"if (1) { return () => { while (true) new this() } }", THIS}, |
- {"return function (x) { return this + x }", NONE}, |
- {"return { m(x) { return super.m() + x } }", NONE}, |
- {"var x = function () { this.foo = 42 };", NONE}, |
- {"var x = { m() { super.foo = 42 } };", NONE}, |
- {"if (1) { return function () { while (true) new this() } }", NONE}, |
- {"if (1) { return { m() { while (true) super.m() } } }", NONE}, |
- {"return function (x) { return () => this }", NONE}, |
- {"return { m(x) { return () => super.m() } }", NONE}, |
- // Flags must be correctly set when using block scoping. |
- {"\"use strict\"; while (true) { let x; this, arguments; }", |
- INNER_ARGUMENTS | THIS}, |
- {"\"use strict\"; while (true) { let x; this, super.f(), arguments; }", |
- INNER_ARGUMENTS | INNER_SUPER_PROPERTY | THIS}, |
- {"\"use strict\"; if (foo()) { let x; this.f() }", THIS}, |
- {"\"use strict\"; if (foo()) { let x; super.f() }", |
- INNER_SUPER_PROPERTY}, |
- {"\"use strict\"; if (1) {" |
- " let x; return { m() { return this + super.m() + arguments } }" |
- "}", |
- NONE}, |
+ {"", NONE}, |
+ {"return this", THIS}, |
+ {"return arguments", ARGUMENTS}, |
+ {"return super.x", SUPER_PROPERTY}, |
+ {"return arguments[0]", ARGUMENTS}, |
+ {"return this + arguments[0]", ARGUMENTS | THIS}, |
+ {"return this + arguments[0] + super.x", |
+ ARGUMENTS | SUPER_PROPERTY | THIS}, |
+ {"return x => this + x", THIS}, |
+ {"return x => super.f() + x", SUPER_PROPERTY}, |
+ {"this.foo = 42;", THIS}, |
+ {"this.foo();", THIS}, |
+ {"if (foo()) { this.f() }", THIS}, |
+ {"if (foo()) { super.f() }", SUPER_PROPERTY}, |
+ {"if (arguments.length) { this.f() }", ARGUMENTS | THIS}, |
+ {"while (true) { this.f() }", THIS}, |
+ {"while (true) { super.f() }", SUPER_PROPERTY}, |
+ {"if (true) { while (true) this.foo(arguments) }", ARGUMENTS | THIS}, |
+ // Multiple nesting levels must work as well. |
+ {"while (true) { while (true) { while (true) return this } }", THIS}, |
+ {"while (true) { while (true) { while (true) return super.f() } }", |
+ SUPER_PROPERTY}, |
+ {"if (1) { return () => { while (true) new this() } }", THIS}, |
+ {"return function (x) { return this + x }", NONE}, |
+ {"return { m(x) { return super.m() + x } }", NONE}, |
+ {"var x = function () { this.foo = 42 };", NONE}, |
+ {"var x = { m() { super.foo = 42 } };", NONE}, |
+ {"if (1) { return function () { while (true) new this() } }", NONE}, |
+ {"if (1) { return { m() { while (true) super.m() } } }", NONE}, |
+ {"return function (x) { return () => this }", NONE}, |
+ {"return { m(x) { return () => super.m() } }", NONE}, |
+ // Flags must be correctly set when using block scoping. |
+ {"\"use strict\"; while (true) { let x; this, arguments; }", |
+ INNER_ARGUMENTS | THIS}, |
+ {"\"use strict\"; while (true) { let x; this, super.f(), arguments; }", |
+ INNER_ARGUMENTS | SUPER_PROPERTY | THIS}, |
+ {"\"use strict\"; if (foo()) { let x; this.f() }", THIS}, |
+ {"\"use strict\"; if (foo()) { let x; super.f() }", SUPER_PROPERTY}, |
+ {"\"use strict\"; if (1) {" |
+ " let x; return { m() { return this + super.m() + arguments } }" |
+ "}", |
+ NONE}, |
}; |
i::Isolate* isolate = CcTest::i_isolate(); |
@@ -1027,7 +1025,6 @@ TEST(ScopeUsesArgumentsSuperThis) { |
for (unsigned i = 0; i < arraysize(source_data); ++i) { |
// Super property is only allowed in constructor and method. |
if (((source_data[i].expected & SUPER_PROPERTY) || |
- (source_data[i].expected & INNER_SUPER_PROPERTY) || |
(source_data[i].expected == NONE)) && j != 2) { |
continue; |
} |
@@ -1075,8 +1072,6 @@ TEST(ScopeUsesArgumentsSuperThis) { |
} |
CHECK_EQ((source_data[i].expected & INNER_ARGUMENTS) != 0, |
scope->inner_uses_arguments()); |
- CHECK_EQ((source_data[i].expected & INNER_SUPER_PROPERTY) != 0, |
- scope->inner_uses_super_property()); |
} |
} |
} |