test262/test/language/expressions/super/prop-dot-cls-null-proto.js
jugglinmike a3fffa754b Improve coverage for "super" keyword (#687)
* Improve test coverage for `super` keyword

Add tests for SuperCall and SuperProperty, organized together in the
`test/language/expressions/super/` directory. For SuperProperty, include
tests for usage from within Object initializers and class bodies because
a different set of semantics are observable from each context.
2016-06-29 16:45:19 -07:00

40 lines
1.1 KiB
JavaScript

// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-super-keyword
es6id: 12.3.5
description: >
SuperProperty evaluation when the "home" object's prototype is not
object-coercible.
info: |
1. Let propertyKey be StringValue of IdentifierName.
2. If the code matched by the syntactic production that is being evaluated is
strict mode code, let strict be true, else let strict be false.
3. Return ? MakeSuperPropertyReference(propertyKey, strict).
12.3.5.3 Runtime Semantics: MakeSuperPropertyReference
1. Let env be GetThisEnvironment( ).
2. If env.HasSuperBinding() is false, throw a ReferenceError exception.
3. Let actualThis be ? env.GetThisBinding().
4. Let baseValue be ? env.GetSuperBase().
5. Let bv be ? RequireObjectCoercible(baseValue).
features: [class]
---*/
var caught;
class C extends null {
method() {
try {
super.x;
} catch (err) {
caught = err;
}
}
}
C.prototype.method();
assert.sameValue(typeof caught, 'object');
assert.sameValue(caught.constructor, TypeError);