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

Unified Diff: lib/facade_converter.ts

Issue 2416003003: Update package name, update and lock clang-format and tslint versions, and format all source files … (Closed)
Patch Set: Use ES6 Map and Set instead of Object literals to avoid ordering instability across different Node … Created 4 years, 2 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/declaration.ts ('k') | lib/main.ts » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/facade_converter.ts
diff --git a/lib/facade_converter.ts b/lib/facade_converter.ts
index 73d544862bdcc258235ae1f94d2447437905240f..60b6eab54823033c2eb91fa0f2ecf164e6efca55 100644
--- a/lib/facade_converter.ts
+++ b/lib/facade_converter.ts
@@ -1,7 +1,7 @@
import * as ts from 'typescript';
import * as base from './base';
-import {Set, TypeDisplayOptions} from './base';
+import {TypeDisplayOptions} from './base';
import {DART_LIBRARIES_FOR_BROWSER_TYPES, TS_TO_DART_TYPENAMES} from './dart_libraries_for_browser_types';
import {Transpiler} from './main';
import {MergedType} from './merge';
@@ -83,44 +83,44 @@ class DartNameRecord {
export class DartLibrary {
constructor(private fileName: string) {
- this.usedNames = {};
+ this.usedNames = new Set();
}
/**
* @returns {boolean} whether the name was added.
*/
addName(name: string): boolean {
- if (Object.prototype.hasOwnProperty.call(this.usedNames, name)) {
+ if (this.usedNames.has(name)) {
return false;
}
- this.usedNames[name] = true;
+ this.usedNames.add(name);
return true;
}
- private usedNames: Set;
+ private usedNames: Set<String>;
}
// TODO(jacobr): track name conflicts better and add library prefixes to avoid them.
export class NameRewriter {
- private dartTypes: ts.Map<DartNameRecord> = {};
+ private dartTypes: Map<String, DartNameRecord> = new Map();
// TODO(jacobr): we aren't really using this well.
- private libraries: ts.Map<DartLibrary> = {};
+ private libraries: Map<String, DartLibrary> = new Map();
constructor(private fc: FacadeConverter) {}
private computeName(node: base.NamedDeclaration): DartNameRecord {
let fullPath = fullJsPath(node);
- if (Object.prototype.hasOwnProperty.call(this.dartTypes, fullPath)) {
- return this.dartTypes[fullPath];
+ if (this.dartTypes.has(fullPath)) {
+ return this.dartTypes.get(fullPath);
}
let sourceFile = <ts.SourceFile>base.getAncestor(node, ts.SyntaxKind.SourceFile);
let fileName = sourceFile.fileName;
let library: DartLibrary;
- if (Object.prototype.hasOwnProperty.call(this.libraries, fileName)) {
- library = this.libraries[fileName];
+ if (this.libraries.has(fileName)) {
+ library = this.libraries.get(fileName);
} else {
library = new DartLibrary(fileName);
- this.libraries[fileName] = library;
+ this.libraries.set(fileName, library);
}
let parts = fullPath.split('.');
for (let i = parts.length - 1; i >= 0; i--) {
@@ -132,7 +132,7 @@ export class NameRewriter {
if (library.addName(candidateName)) {
// Able to add name to library.
let ret = new DartNameRecord(node, candidateName, library);
- this.dartTypes[fullPath] = ret;
+ this.dartTypes.set(fullPath, ret);
return ret;
}
}
@@ -148,7 +148,7 @@ export class NameRewriter {
if (library.addName(candidateName)) {
// Able to add name to library.
let ret = new DartNameRecord(node, candidateName, library);
- this.dartTypes[fullPath] = ret;
+ this.dartTypes.set(fullPath, ret);
return ret;
}
i++;
@@ -205,11 +205,11 @@ function resolveTypeArguments(
options: TypeDisplayOptions, parameters: ts.TypeParameterDeclaration[]) {
let ret = cloneOptions(options);
let typeArguments = options.typeArguments ? options.typeArguments : [];
- ret.resolvedTypeArguments = {};
+ ret.resolvedTypeArguments = new Map();
if (parameters) {
for (let i = 0; i < parameters.length; ++i) {
let param = parameters[i];
- ret.resolvedTypeArguments[base.ident(param.name)] = typeArguments[i];
+ ret.resolvedTypeArguments.set(base.ident(param.name), typeArguments[i]);
}
}
// Type arguments have been resolved forward so we don't need to emit them directly.
@@ -239,23 +239,24 @@ export class FacadeConverter extends base.TranspilerBase {
'library operator part set static sync typedef yield call')
.split(/ /);
- private candidateTypes: {[typeName: string]: boolean} = {};
+ private candidateTypes: Map<string, boolean> = new Map();
private typingsRootRegex: RegExp;
private genericMethodDeclDepth = 0;
private nameRewriter: NameRewriter;
- constructor(transpiler: Transpiler, typingsRoot = '') {
+ constructor(transpiler: Transpiler, typingsRoot?: string) {
super(transpiler);
+ typingsRoot = typingsRoot || '';
this.nameRewriter = new NameRewriter(this);
this.extractPropertyNames(TS_TO_DART_TYPENAMES, this.candidateTypes);
// Remove this line if decide to support generating code that avoids dart:html.
Object.keys(DART_LIBRARIES_FOR_BROWSER_TYPES)
- .forEach((propName) => this.candidateTypes[propName] = true);
+ .forEach((propName) => this.candidateTypes.set(propName, true));
this.typingsRootRegex = new RegExp('^' + typingsRoot.replace('.', '\\.'));
}
- private extractPropertyNames(m: ts.Map<ts.Map<any>>, candidates: {[k: string]: boolean}) {
+ private extractPropertyNames(m: ts.Map<ts.Map<any>>, candidates: Map<string, boolean>) {
for (let fileName of Object.keys(m)) {
const file = m[fileName];
if (file === undefined) {
@@ -263,7 +264,7 @@ export class FacadeConverter extends base.TranspilerBase {
}
Object.keys(file)
.map((propName) => propName.substring(propName.lastIndexOf('.') + 1))
- .forEach((propName) => candidates[propName] = true);
+ .forEach((propName) => candidates.set(propName, true));
}
}
@@ -323,7 +324,8 @@ export class FacadeConverter extends base.TranspilerBase {
return symbol.declarations.some(d => d.parent.kind === ts.SyntaxKind.FunctionDeclaration);
}
- generateTypeList(types: ts.TypeNode[], options: TypeDisplayOptions, seperator = ','): string {
+ generateTypeList(types: ts.TypeNode[], options: TypeDisplayOptions, seperator?: string): string {
+ seperator = seperator || ',';
let that = this;
return types
.map((type) => {
@@ -624,11 +626,10 @@ export class FacadeConverter extends base.TranspilerBase {
let declaration = this.getSymbolDeclaration(symbol, identifier);
if (symbol && symbol.flags & ts.SymbolFlags.TypeParameter) {
let kind = declaration.parent.kind;
- if (options.resolvedTypeArguments &&
- Object.hasOwnProperty.call(options.resolvedTypeArguments, ident)) {
+ if (options.resolvedTypeArguments && options.resolvedTypeArguments.has(ident)) {
return {
name: this.generateDartTypeName(
- options.resolvedTypeArguments[ident], removeResolvedTypeArguments(options))
+ options.resolvedTypeArguments.get(ident), removeResolvedTypeArguments(options))
};
}
// Only kinds of TypeParameters supported by Dart.
@@ -638,7 +639,7 @@ export class FacadeConverter extends base.TranspilerBase {
}
}
- if (this.candidateTypes.hasOwnProperty(ident)) {
+ if (this.candidateTypes.has(ident)) {
if (!symbol) {
return null;
}
« no previous file with comments | « lib/declaration.ts ('k') | lib/main.ts » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698