Chromium Code Reviews| Index: pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart |
| diff --git a/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart b/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart |
| index 786d947ea2a9fb878e638c92aec86c48c78f1789..006ce494ae3c412361ae0dba8b98864790321a0b 100644 |
| --- a/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart |
| +++ b/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart |
| @@ -19,15 +19,14 @@ import '../../elements/elements.dart' |
| ClassElement, |
| FieldElement, |
| FunctionSignature, |
| - GetterElement, |
| LibraryElement, |
| MemberElement, |
| MethodElement, |
| ParameterElement; |
| import '../../elements/entities.dart'; |
| import '../../elements/resolution_types.dart' |
| - show ResolutionDartType, ResolutionFunctionType, ResolutionTypedefType; |
| -import '../../elements/types.dart' show DartType, DartTypes; |
| + show ResolutionDartType, ResolutionFunctionType; |
| +import '../../elements/types.dart'; |
| import '../../js/js.dart' as js; |
| import '../../js_backend/backend.dart' show SuperMemberData; |
| import '../../js_backend/backend_usage.dart'; |
| @@ -525,9 +524,7 @@ class ProgramBuilder { |
| for (ClassEntity cls in classElements) { |
| if (_nativeData.isJsInteropClass(cls)) { |
| // TODO(redemption): Handle class entities. |
|
Siggi Cherem (dart-lang)
2017/08/11 16:14:59
delete todo?
Johnni Winther
2017/08/15 14:17:37
Done.
|
| - ClassElement e = cls; |
| - e.declaration.forEachMember((_, _member) { |
| - MemberElement member = _member; |
| + _elementEnvironment.forEachClassMember(cls, (_, MemberEntity member) { |
| var jsName = _nativeData.computeUnescapedJSInteropName(member.name); |
| if (!member.isInstanceMember) return; |
| if (member.isGetter || member.isField || member.isFunction) { |
| @@ -561,15 +558,15 @@ class ProgramBuilder { |
| // Generating stubs for direct calls and stubs for call-through |
| // of getters that happen to be functions. |
| bool isFunctionLike = false; |
| - ResolutionFunctionType functionType = null; |
| + FunctionType functionType = null; |
| if (member.isFunction) { |
| MethodElement fn = member; |
| functionType = fn.type; |
| } else if (member.isGetter) { |
| if (_options.trustTypeAnnotations) { |
| - GetterElement getter = member; |
| - ResolutionDartType returnType = getter.type.returnType; |
| + DartType returnType = |
| + _elementEnvironment.getFunctionType(member).returnType; |
| if (returnType.isFunctionType) { |
| functionType = returnType; |
| } else if (returnType.treatAsDynamic || |
| @@ -578,9 +575,8 @@ class ProgramBuilder { |
| // ignore: UNNECESSARY_CAST |
| _commonElements.functionType as DartType)) { |
| if (returnType.isTypedef) { |
| - ResolutionTypedefType typedef = returnType; |
| - // TODO(jacobr): can we just use typdef.unaliased instead? |
| - functionType = typedef.element.functionSignature.type; |
| + TypedefType typedef = returnType; |
| + functionType = typedef.unaliased; |
| } else { |
| // Other misc function type such as commonElements.Function. |
| // Allow any number of arguments. |