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

Unified Diff: lib/type.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/statement.ts ('k') | package.json » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/type.ts
diff --git a/lib/type.ts b/lib/type.ts
index fa15a61dabc1b59090aeff93b35273828b112cb6..b5680f281106246fd898fbc59f72956de1e488ca 100644
--- a/lib/type.ts
+++ b/lib/type.ts
@@ -1,37 +1,18 @@
import * as ts from 'typescript';
+
import * as base from './base';
+import {FacadeConverter, fixupIdentifierName} from './facade_converter';
import {Transpiler} from './main';
-import {FacadeConverter} from './facade_converter';
export default class TypeTranspiler extends base.TranspilerBase {
constructor(tr: Transpiler, private fc: FacadeConverter) { super(tr); }
visitNode(node: ts.Node): boolean {
+ if (base.isTypeNode(node)) {
+ this.emit(this.fc.generateDartTypeName(<ts.TypeNode>node, this.insideCodeComment));
+ return true;
+ }
switch (node.kind) {
- case ts.SyntaxKind.TypeLiteral:
- let indexType = this.maybeDestructureIndexType(<ts.TypeLiteralNode>node);
- if (indexType) {
- // This is effectively a Map.
- this.emit('Map <');
- this.visit(indexType[0]);
- this.emit(',');
- this.visit(indexType[1]);
- this.emit('>');
- } else {
- // Dart doesn't support other type literals.
- this.emit('dynamic');
- }
- break;
- case ts.SyntaxKind.UnionType:
- this.emit('dynamic /*');
- this.visitList((<ts.UnionTypeNode>node).types, '|');
- this.emit('*/');
- break;
- case ts.SyntaxKind.TypeReference:
- let typeRef = <ts.TypeReferenceNode>node;
- this.fc.visitTypeName(typeRef.typeName);
- this.maybeVisitTypeArguments(typeRef);
- break;
case ts.SyntaxKind.TypeAssertionExpression:
let typeAssertExpr = <ts.TypeAssertion>node;
if (this.isReifiedTypeLiteral(typeAssertExpr)) {
@@ -52,27 +33,25 @@ export default class TypeTranspiler extends base.TranspilerBase {
this.visit(typeParam.constraint);
}
break;
- case ts.SyntaxKind.ArrayType:
- this.emit('List');
- this.emit('<');
- this.visit((<ts.ArrayTypeNode>node).elementType);
- this.emit('>');
- break;
- case ts.SyntaxKind.FunctionType:
- this.emit('dynamic /*');
- this.emit(node.getText());
- this.emit('*/');
- break;
case ts.SyntaxKind.QualifiedName:
+ // TODO(jacobr): there is overlap between this case and
+ // generateDartTypeName in facade_converter.
let first = <ts.QualifiedName>node;
+ let match = this.fc.lookupCustomDartTypeName(first, this.insideCodeComment);
+ if (match) {
+ this.emitType(match.name, match.comment);
+ break;
+ }
this.visit(first.left);
this.emit('.');
this.visit(first.right);
break;
case ts.SyntaxKind.Identifier:
let ident = <ts.Identifier>node;
- this.fc.visitTypeName(ident);
+ let text = fixupIdentifierName(ident.text);
+ this.emit(text);
break;
+ // TODO(jacobr): all these cases might be obsolete.
case ts.SyntaxKind.NumberKeyword:
this.emit('num');
break;
« no previous file with comments | « lib/statement.ts ('k') | package.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698