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

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: Fix types 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
« no previous file with comments | « lib/merge.ts ('k') | lib/statement.ts » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/module.ts
diff --git a/lib/module.ts b/lib/module.ts
index 8b8d12c156b5d2bfb73542f7ea24a60c19fd92fc..a985fcdf3b4225aaff03a1acff9a3a664d5131a8 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) {
@@ -11,12 +12,14 @@ export default class ModuleTranspiler extends base.TranspilerBase {
visitNode(node: ts.Node): boolean {
switch (node.kind) {
case ts.SyntaxKind.SourceFile:
- if (this.generateLibraryName) {
- this.emit('library');
- this.emit(this.getLibraryName());
- this.emit(';');
- }
- this.fc.emitExtraImports(<ts.SourceFile>node);
+ this.pushContext(OutputContext.Import);
+ this.emit('@JS()');
+ this.emit('library');
+ this.emit(this.getLibraryName());
+ this.emit(';');
+ this.popContext();
+
+ this.emitImport('package:js/js.dart');
ts.forEachChild(node, this.visit.bind(this));
break;
case ts.SyntaxKind.EndOfFileToken:
@@ -81,11 +84,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 +102,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 +122,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 +130,16 @@ 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) => p.replace(/\./g, ''))
+ .map((p) => FacadeConverter.DART_RESERVED_WORDS.indexOf(p) !== -1 ? '_' + p : p)
+ .filter((p) => p.length > 0)
.join('.');
}
}
« no previous file with comments | « lib/merge.ts ('k') | lib/statement.ts » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698