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

Unified Diff: pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart

Issue 1688433006: cpsir: implementation of jsinterop in cps ir (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 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
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart ('k') | pkg/compiler/lib/src/cps_ir/inline.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
index 3ae2c1bd8b306e4d385366a8cd3a4fd3465aa8bd..9e94112a0e87ea939c21d87cfe1415f4daafc808 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
@@ -796,7 +796,10 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
/// Creates a primitive for the default value of [parameter].
ir.Primitive translateDefaultValue(ParameterElement parameter) {
- if (parameter.initializer == null) {
+ if (parameter.initializer == null ||
+ // TODO(sigmund): JS doesn't support default values, so this should be
+ // reported as an error earlier (Issue #25759).
+ backend.isJsInterop(parameter.functionDeclaration)) {
return irBuilder.buildNullConstant();
} else {
return inlineConstant(parameter.executableContext, parameter.initializer);
@@ -3921,4 +3924,22 @@ class GlobalProgramInformation {
void addNativeMethod(FunctionElement function) {
_backend.emitter.nativeEmitter.nativeMethods.add(function);
}
+
+ bool get trustJSInteropTypeAnnotations =>
+ _compiler.trustJSInteropTypeAnnotations;
+
+ bool isNative(ClassElement element) => _backend.isNative(element);
+
+ bool isJsInterop(FunctionElement element) => _backend.isJsInterop(element);
+
+ bool isJsInteropAnonymous(FunctionElement element) =>
+ _backend.jsInteropAnalysis.hasAnonymousAnnotation(element.contextClass);
+
+ String getJsInteropTargetPath(FunctionElement element) {
+ return '${_backend.namer.fixedBackendPath(element)}.'
+ '${_backend.getFixedBackendName(element)}';
+ }
+
+ DartType get jsJavascriptObjectType =>
+ _backend.helpers.jsJavaScriptObjectClass.thisType;
}
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart ('k') | pkg/compiler/lib/src/cps_ir/inline.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698