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

Unified Diff: lib/module.ts

Issue 2225953002: Strip more unused features. (Closed) Base URL: git@github.com:dart-lang/js_facade_gen.git@master
Patch Set: Created 4 years, 4 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: lib/module.ts
diff --git a/lib/module.ts b/lib/module.ts
index 8b8d12c156b5d2bfb73542f7ea24a60c19fd92fc..94962f061f342fbbd84332a015e4120f2eac7275 100644
--- a/lib/module.ts
+++ b/lib/module.ts
@@ -1,7 +1,8 @@
import * as ts from 'typescript';
+
import * as base from './base';
-import {Transpiler} from './main';
import {FacadeConverter} from './facade_converter';
+import {OutputContext, Transpiler} from './main';
export default class ModuleTranspiler extends base.TranspilerBase {
constructor(tr: Transpiler, private fc: FacadeConverter, private generateLibraryName: boolean) {
@@ -12,11 +13,15 @@ export default class ModuleTranspiler extends base.TranspilerBase {
switch (node.kind) {
case ts.SyntaxKind.SourceFile:
if (this.generateLibraryName) {
+ this.pushContext(OutputContext.Import);
+ this.emit('@JS()');
this.emit('library');
this.emit(this.getLibraryName());
this.emit(';');
+ this.popContext();
+
+ this.emitImport('package:js/js.dart');
}
- this.fc.emitExtraImports(<ts.SourceFile>node);
ts.forEachChild(node, this.visit.bind(this));
break;
case ts.SyntaxKind.EndOfFileToken:
@@ -81,11 +86,13 @@ export default class ModuleTranspiler extends base.TranspilerBase {
break;
case ts.SyntaxKind.ImportEqualsDeclaration:
let importEqDecl = <ts.ImportEqualsDeclaration>node;
+ this.pushContext(OutputContext.Import);
this.emit('import');
this.visit(importEqDecl.moduleReference);
this.emit('as');
this.fc.visitTypeName(importEqDecl.name);
this.emit(';');
+ this.popContext();
break;
case ts.SyntaxKind.ExternalModuleReference:
this.visitExternalModuleReferenceExpr((<ts.ExternalModuleReference>node).expression);
@@ -97,21 +104,7 @@ export default class ModuleTranspiler extends base.TranspilerBase {
return true;
}
- private static isIgnoredImport(e: ts.ImportSpecifier) {
- // TODO: unify with facade_converter.ts
- let name = base.ident(e.name);
- switch (name) {
- case 'CONST':
- case 'CONST_EXPR':
- case 'normalizeBlank':
- case 'forwardRef':
- case 'ABSTRACT':
- case 'IMPLEMENTS':
- return true;
- default:
- return false;
- }
- }
+ private static isIgnoredImport(e: ts.ImportSpecifier) { return false; }
private visitExternalModuleReferenceExpr(expr: ts.Expression) {
// TODO: what if this isn't a string literal?
@@ -131,9 +124,7 @@ export default class ModuleTranspiler extends base.TranspilerBase {
let bindings = n.importClause.namedBindings;
if (bindings.kind !== ts.SyntaxKind.NamedImports) return false;
let elements = (<ts.NamedImports>bindings).elements;
- // An import list being empty *after* filtering is ok, but if it's empty in the code itself,
- // it's nonsensical code, so probably a programming error.
- if (elements.length === 0) this.reportError(n, 'empty import list');
+ if (elements.length === 0) return true;
return elements.every(ModuleTranspiler.isIgnoredImport);
}
@@ -141,21 +132,14 @@ export default class ModuleTranspiler extends base.TranspilerBase {
return ns.filter((e) => !ModuleTranspiler.isIgnoredImport(e));
}
- // For the Dart keyword list see
- // https://www.dartlang.org/docs/dart-up-and-running/ch02.html#keywords
- private static DART_RESERVED_WORDS =
- ('assert break case catch class const continue default do else enum extends false final ' +
- 'finally for if in is new null rethrow return super switch this throw true try let void ' +
- 'while with')
- .split(/ /);
-
getLibraryName(nameForTest?: string) {
let fileName = this.getRelativeFileName(nameForTest);
let parts = fileName.split('/');
return parts.filter((p) => p.length > 0)
.map((p) => p.replace(/[^\w.]/g, '_'))
+ .map((p) => p.replace(/\.d\.ts$/g, ''))
.map((p) => p.replace(/\.[jt]s$/g, ''))
- .map((p) => ModuleTranspiler.DART_RESERVED_WORDS.indexOf(p) !== -1 ? '_' + p : p)
+ .map((p) => FacadeConverter.DART_RESERVED_WORDS.indexOf(p) !== -1 ? '_' + p : p)
.join('.');
}
}

Powered by Google App Engine
This is Rietveld 408576698