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

Unified Diff: lib/src/codegen/js_codegen.dart

Issue 1724463003: refactor: avoid parts (Closed) Base URL: git@github.com:dart-lang/dev_compiler.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 | « no previous file | lib/src/codegen/js_interop.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/codegen/js_codegen.dart
diff --git a/lib/src/codegen/js_codegen.dart b/lib/src/codegen/js_codegen.dart
index e06a145e2e50d3c0291e0d4d665a238cd3e9747a..bdd9bf2209b5a47371d2cbbaed32cc32eff86bf1 100644
--- a/lib/src/codegen/js_codegen.dart
+++ b/lib/src/codegen/js_codegen.dart
@@ -2,8 +2,6 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-library js_codegen;
-
import 'dart:collection' show HashSet, HashMap, SplayTreeSet;
import 'package:analyzer/analyzer.dart' hide ConstantEvaluator;
@@ -22,7 +20,6 @@ import 'package:analyzer/src/task/dart.dart' show PublicNamespaceBuilder;
import 'ast_builder.dart' show AstBuilder;
import 'reify_coercions.dart' show CoercionReifier, Tuple2;
-// TODO(jmesserly): import from its own package
import '../js/js_ast.dart' as JS;
import '../js/js_ast.dart' show js;
@@ -41,12 +38,11 @@ import 'js_metalet.dart' as JS;
import 'js_module_item_order.dart';
import 'js_names.dart';
import 'js_printer.dart' show writeJsLibrary;
+import 'js_typeref_codegen.dart';
import 'module_builder.dart';
import 'nullability_inferrer.dart';
import 'side_effect_analysis.dart';
-part 'js_typeref_codegen.dart';
-
// Various dynamic helpers we call.
// If renaming these, make sure to check other places like the
// _runtime.js file and comments.
@@ -99,7 +95,7 @@ class JSCodegenVisitor extends GeneralizingAstVisitor
final _dartxVar = new JS.Identifier('dartx');
final _exportsVar = new JS.TemporaryId('exports');
final _runtimeLibVar = new JS.Identifier('dart');
- final _namedArgTemp = new JS.TemporaryId('opts');
+ final namedArgumentTemp = new JS.TemporaryId('opts');
final TypeProvider _types;
@@ -246,12 +242,14 @@ class JSCodegenVisitor extends GeneralizingAstVisitor
// we have support for modules.
}
- @override void visitPartDirective(PartDirective node) {}
- @override void visitPartOfDirective(PartOfDirective node) {}
+ @override
+ void visitPartDirective(PartDirective node) {}
+ @override
+ void visitPartOfDirective(PartOfDirective node) {}
@override
void visitExportDirective(ExportDirective node) {
- var exportName = _libraryName(node.uriElement);
+ var exportName = emitLibraryName(node.uriElement);
var currentLibNames = currentLibrary.publicNamespace.definedNames;
@@ -1340,10 +1338,10 @@ class JSCodegenVisitor extends GeneralizingAstVisitor
// TODO(ochafik): Fix `'prop' in obj` to please Closure's renaming.
body.add(js.statement('let # = # && # in # ? #.# : #;', [
jsParam,
- _namedArgTemp,
+ namedArgumentTemp,
paramName,
- _namedArgTemp,
- _namedArgTemp,
+ namedArgumentTemp,
+ namedArgumentTemp,
paramName,
_defaultParamValue(param),
]));
@@ -1454,17 +1452,6 @@ class JSCodegenVisitor extends GeneralizingAstVisitor
node.element);
}
- /// Returns the name value of the `JSExportName` annotation (when compiling
- /// the SDK), or `null` if there's none. This is used to control the name
- /// under which functions are compiled and exported.
- String _getJSExportName(Element e) {
- if (!e.source.isInSystemLibrary) {
- return null;
- }
- var jsName = findAnnotation(e, isJSExportNameAnnotation);
- return getConstantField(jsName, 'name', types.stringType)?.toStringValue();
- }
-
@override
JS.Statement visitFunctionDeclaration(FunctionDeclaration node) {
assert(node.parent is CompilationUnit);
@@ -1497,7 +1484,7 @@ class JSCodegenVisitor extends GeneralizingAstVisitor
}
if (isPublic(name)) {
- _addExport(name, _getJSExportName(node.element) ?? name);
+ _addExport(name, getJSExportName(node.element, types) ?? name);
}
return _statement(body);
}
@@ -1962,7 +1949,7 @@ class JSCodegenVisitor extends GeneralizingAstVisitor
}
JS.Expression _emitTopLevelName(Element e, {String suffix: ''}) {
- var libName = _libraryName(e.library);
+ var libName = emitLibraryName(e.library);
// Always qualify:
// * mutable top-level fields
@@ -1973,7 +1960,7 @@ class JSCodegenVisitor extends GeneralizingAstVisitor
bool fromAnotherLibrary = e.library != currentLibrary;
var nameExpr;
if (fromAnotherLibrary) {
- nameExpr = _propertyName((_getJSExportName(e) ?? e.name) + suffix);
+ nameExpr = _propertyName((getJSExportName(e, types) ?? e.name) + suffix);
} else {
nameExpr = _propertyName(e.name + suffix);
}
@@ -2281,7 +2268,7 @@ class JSCodegenVisitor extends GeneralizingAstVisitor
}
if (needsOpts) {
- result.add(_namedArgTemp);
+ result.add(namedArgumentTemp);
} else if (namedVars.isNotEmpty) {
// Note: `var {valueOf} = {}` extracts `Object.prototype.valueOf`, so
// in case there are conflicting names we create an object without
@@ -2504,7 +2491,7 @@ class JSCodegenVisitor extends GeneralizingAstVisitor
var fieldName = field.name.name;
var exportName = fieldName;
if (element is TopLevelVariableElement) {
- exportName = _getJSExportName(element) ?? fieldName;
+ exportName = getJSExportName(element, types) ?? fieldName;
}
if ((field.isConst && eagerInit && element is TopLevelVariableElement) ||
isJSTopLevel) {
@@ -2575,7 +2562,7 @@ class JSCodegenVisitor extends GeneralizingAstVisitor
if (target is ClassElement) {
objExpr = new JS.Identifier(target.type.name);
} else {
- objExpr = _libraryName(target);
+ objExpr = emitLibraryName(target);
}
return js
@@ -3526,7 +3513,7 @@ class JSCodegenVisitor extends GeneralizingAstVisitor
// TODO(jmesserly): this will need to be a generic method, if we ever want to
// self-host strong mode.
- List /*<T>*/ _visitList /*<T>*/ (Iterable<AstNode> nodes) {
+ List/*<T>*/ _visitList/*<T>*/(Iterable<AstNode> nodes) {
if (nodes == null) return null;
var result = /*<T>*/ [];
for (var node in nodes) result.add(_visit(node));
@@ -3654,7 +3641,7 @@ class JSCodegenVisitor extends GeneralizingAstVisitor
/// Choose a canonical name from the library element.
/// This never uses the library's name (the identifier in the `library`
/// declaration) as it doesn't have any meaningful rules enforced.
- JS.Identifier _libraryName(LibraryElement library) {
+ JS.Identifier emitLibraryName(LibraryElement library) {
if (library == currentLibrary) return _exportsVar;
if (library.name == 'dart._runtime') return _runtimeLibVar;
return _imports.putIfAbsent(
@@ -3666,8 +3653,8 @@ class JSCodegenVisitor extends GeneralizingAstVisitor
JS.Node annotate(JS.Node node, AstNode original, [Element element]) {
if (options.closure && element != null) {
- node = node.withClosureAnnotation(
- closureAnnotationFor(node, original, element, _namedArgTemp.name));
+ node = node.withClosureAnnotation(closureAnnotationFor(
+ node, original, element, namedArgumentTemp.name));
}
return node..sourceInformation = original;
}
« no previous file with comments | « no previous file | lib/src/codegen/js_interop.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698