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

Unified Diff: lib/src/compiler/js_typeref_codegen.dart

Issue 1879373004: Implement modular compilation (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 4 years, 8 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 | « lib/src/compiler/js_names.dart ('k') | lib/src/compiler/module_builder.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/compiler/js_typeref_codegen.dart
diff --git a/lib/src/codegen/js_typeref_codegen.dart b/lib/src/compiler/js_typeref_codegen.dart
similarity index 82%
rename from lib/src/codegen/js_typeref_codegen.dart
rename to lib/src/compiler/js_typeref_codegen.dart
index 7aa4c0a2e7d0786aef798846670d9a045c99ad7c..b43692d09b699aff46e20be3de8e47248b99a06f 100644
--- a/lib/src/codegen/js_typeref_codegen.dart
+++ b/lib/src/compiler/js_typeref_codegen.dart
@@ -7,8 +7,8 @@ import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/generated/resolver.dart' show TypeProvider;
import 'package:analyzer/src/generated/utilities_dart.dart';
-import '../js/js_ast.dart' as JS;
-import '../options.dart';
+import '../js_ast/js_ast.dart' as JS;
+import 'compiler.dart' show CompilerOptions;
import 'js_interop.dart';
/// Mixin with logic to generate [TypeRef]s out of [DartType]s.
@@ -16,23 +16,17 @@ abstract class JsTypeRefCodegen {
final _resolved = <DartType, JS.TypeRef>{};
// Mixin dependencies:
- CodegenOptions get options;
+ CompilerOptions get options;
TypeProvider get types;
+ LibraryElement get dartJSLibrary;
JS.Identifier get namedArgumentTemp;
- LibraryElement get currentLibrary;
JS.Identifier emitLibraryName(LibraryElement e);
/// Finds the qualified path to the type.
JS.TypeRef _emitTopLevelTypeRef(DartType type) {
var e = type.element;
- if (e.library == currentLibrary) {
- return new JS.TypeRef.named(type.name);
- } else {
- return new JS.TypeRef.qualified([
- emitLibraryName(e.library),
- new JS.Identifier(getJSExportName(e, types) ?? type.name)
- ]);
- }
+ return new JS.TypeRef.qualified(
+ [emitLibraryName(e.library), new JS.Identifier(getJSExportName(e))]);
}
JS.TypeRef emitTypeRef(DartType type) {
@@ -114,20 +108,18 @@ abstract class JsTypeRefCodegen {
/// Special treatment of types from dart:js
/// TODO(ochafik): Is this the right thing to do? And what about package:js?
JS.TypeRef _getDartJsTypeRef(DartType type) {
- switch (type.element.source.uri.toString()) {
- case 'dart:js':
- switch (type.name) {
- case 'JsArray':
- return new JS.TypeRef.array(
- type is InterfaceType && type.typeArguments.length == 1
- ? emitTypeRef(type.typeArguments.single)
- : null);
- case 'JsObject':
- return new JS.TypeRef.object();
- case 'JsFunction':
- return new JS.TypeRef.function();
- }
- break;
+ if (type.element.library == dartJSLibrary) {
+ switch (type.name) {
+ case 'JsArray':
+ return new JS.TypeRef.array(
+ type is InterfaceType && type.typeArguments.length == 1
+ ? emitTypeRef(type.typeArguments.single)
+ : null);
+ case 'JsObject':
+ return new JS.TypeRef.object();
+ case 'JsFunction':
+ return new JS.TypeRef.function();
+ }
}
return null;
}
« no previous file with comments | « lib/src/compiler/js_names.dart ('k') | lib/src/compiler/module_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698