Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Unified Diff: pkg/dev_compiler/lib/src/compiler/code_generator.dart

Issue 2944003003: Fixes for super tearoff in constructor (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/dev_compiler/lib/src/compiler/code_generator.dart
diff --git a/pkg/dev_compiler/lib/src/compiler/code_generator.dart b/pkg/dev_compiler/lib/src/compiler/code_generator.dart
index 06cf6bce33d9e09975c247feee0ebaa602aa46ec..bd4f6199ed18d7c5531095f89cc9045d8e74d390 100644
--- a/pkg/dev_compiler/lib/src/compiler/code_generator.dart
+++ b/pkg/dev_compiler/lib/src/compiler/code_generator.dart
@@ -2793,6 +2793,7 @@ class CodeGenerator extends Object
// To be safe always use the symbolized name when binding on a native
// class as bind assumes the name will match the name class sigatures
// which is symbolized for native classes.
+
var safeName = _emitMemberName(name,
isStatic: isStatic,
type: type,
@@ -4820,14 +4821,21 @@ class CodeGenerator extends Object
// To be safe always use the symbolized name when binding on a native
// class as bind assumes the name will match the name class signatures
// which is symbolized for native classes.
+
var safeName = _emitMemberName(memberName,
type: getStaticType(target),
isStatic: isStatic,
element: accessor,
alwaysSymbolizeNative: true);
if (isSuper) {
- result =
- _callHelper('bind(this, #, #.#)', [safeName, jsTarget, safeName]);
+ if (!_superAllowed && jsTarget is JS.Super) {
Jennifer Messerly 2017/06/19 20:24:52 You could refactor this entire code block, replaci
vsm 2017/06/19 20:36:20 Done.
+ var superName = _getSuperHelper(accessor, safeName)
+ ..sourceInformation = jsTarget.sourceInformation;
+ result = _callHelper('bind(this, #, #)', [safeName, superName]);
+ } else {
+ result =
+ _callHelper('bind(this, #, #.#)', [safeName, jsTarget, safeName]);
+ }
} else if (_isObjectMemberCall(target, memberName)) {
result = _callHelper('bind(#, #, #.#)',
[jsTarget, _propertyName(memberName), _runtimeModule, memberName]);
« no previous file with comments | « no previous file | tests/language_strong/super_tearoff_test.dart » ('j') | tests/language_strong/super_tearoff_test.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698