Skip to content

Commit 675f730

Browse files
committed
more updates for latest compiler
1 parent afabd84 commit 675f730

File tree

2 files changed

+100
-59
lines changed

2 files changed

+100
-59
lines changed

src/generator/generator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ module ts {
6767

6868
return {
6969
getSourceFile: getSourceFile,
70-
getDefaultLibFileName: (compilerOptions:CompilerOptions) => combinePaths(getDirectoryPath(normalizePath(sys.getExecutingFilePath())), "lib.d.ts"),
70+
getDefaultLibFileName: (compilerOptions:CompilerOptions) => combinePaths(getDirectoryPath(normalizePath(sys.getExecutingFilePath())), "lib.d.ts"),
7171
writeFile: writeFile,
7272
getCurrentDirectory: () => currentDirectory || (currentDirectory = sys.getCurrentDirectory()),
7373
useCaseSensitiveFileNames: () => sys.useCaseSensitiveFileNames,

src/generator/generatorAPI.ts

Lines changed: 99 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
module tsgen {
77

8+
export var internal = ts;
89

910
export interface INodeHandler {
1011
(n:ts.Node, after:boolean, context:any):boolean;
@@ -17,6 +18,9 @@ module tsgen {
1718
MultiLineCommentTrivia?: INodeHandler;
1819
NewLineTrivia?: INodeHandler;
1920
WhitespaceTrivia?: INodeHandler;
21+
// We detect and provide better error recovery when we encounter a git merge marker. This
22+
// allows us to edit files with git-conflict markers in them in a much more pleasant manner.
23+
ConflictMarkerTrivia?: INodeHandler;
2024
// Literals
2125
NumericLiteral?: INodeHandler;
2226
StringLiteral?: INodeHandler;
@@ -118,6 +122,7 @@ module tsgen {
118122
WhileKeyword?: INodeHandler;
119123
WithKeyword?: INodeHandler;
120124
// Strict mode reserved words
125+
AsKeyword?: INodeHandler;
121126
ImplementsKeyword?: INodeHandler;
122127
InterfaceKeyword?: INodeHandler;
123128
LetKeyword?: INodeHandler;
@@ -127,7 +132,7 @@ module tsgen {
127132
PublicKeyword?: INodeHandler;
128133
StaticKeyword?: INodeHandler;
129134
YieldKeyword?: INodeHandler;
130-
// TypeScript keywords
135+
// Contextual keywords
131136
AnyKeyword?: INodeHandler;
132137
BooleanKeyword?: INodeHandler;
133138
ConstructorKeyword?: INodeHandler;
@@ -138,17 +143,24 @@ module tsgen {
138143
NumberKeyword?: INodeHandler;
139144
SetKeyword?: INodeHandler;
140145
StringKeyword?: INodeHandler;
146+
SymbolKeyword?: INodeHandler;
141147
TypeKeyword?: INodeHandler;
148+
FromKeyword?: INodeHandler;
149+
OfKeyword?: INodeHandler; // LastKeyword and LastToken
150+
142151
// Parse tree nodes
143-
Missing?: INodeHandler;
152+
144153
// Names
145154
QualifiedName?: INodeHandler;
155+
ComputedPropertyName?: INodeHandler;
146156
// Signature elements
147157
TypeParameter?: INodeHandler;
148158
Parameter?: INodeHandler;
149159
// TypeMember
150-
Property?: INodeHandler;
151-
Method?: INodeHandler;
160+
PropertySignature?: INodeHandler;
161+
PropertyDeclaration?: INodeHandler;
162+
MethodSignature?: INodeHandler;
163+
MethodDeclaration?: INodeHandler;
152164
Constructor?: INodeHandler;
153165
GetAccessor?: INodeHandler;
154166
SetAccessor?: INodeHandler;
@@ -164,28 +176,36 @@ module tsgen {
164176
ArrayType?: INodeHandler;
165177
TupleType?: INodeHandler;
166178
UnionType?: INodeHandler;
167-
ParenType?: INodeHandler;
179+
ParenthesizedType?: INodeHandler;
180+
// Binding patterns
181+
ObjectBindingPattern?: INodeHandler;
182+
ArrayBindingPattern?: INodeHandler;
183+
BindingElement?: INodeHandler;
168184
// Expression
169-
ArrayLiteral?: INodeHandler;
170-
ObjectLiteral?: INodeHandler;
171-
PropertyAssignment?: INodeHandler;
172-
ShorthandPropertyAssignment?: INodeHandler;
173-
PropertyAccess?: INodeHandler;
174-
IndexedAccess?: INodeHandler;
185+
ArrayLiteralExpression?: INodeHandler;
186+
ObjectLiteralExpression?: INodeHandler;
187+
PropertyAccessExpression?: INodeHandler;
188+
ElementAccessExpression?: INodeHandler;
175189
CallExpression?: INodeHandler;
176190
NewExpression?: INodeHandler;
177191
TaggedTemplateExpression?: INodeHandler;
178-
TypeAssertion?: INodeHandler;
179-
ParenExpression?: INodeHandler;
192+
TypeAssertionExpression?: INodeHandler;
193+
ParenthesizedExpression?: INodeHandler;
180194
FunctionExpression?: INodeHandler;
181195
ArrowFunction?: INodeHandler;
182-
PrefixOperator?: INodeHandler;
183-
PostfixOperator?: INodeHandler;
196+
DeleteExpression?: INodeHandler;
197+
TypeOfExpression?: INodeHandler;
198+
VoidExpression?: INodeHandler;
199+
PrefixUnaryExpression?: INodeHandler;
200+
PostfixUnaryExpression?: INodeHandler;
184201
BinaryExpression?: INodeHandler;
185202
ConditionalExpression?: INodeHandler;
186203
TemplateExpression?: INodeHandler;
187-
TemplateSpan?: INodeHandler;
204+
YieldExpression?: INodeHandler;
205+
SpreadElementExpression?: INodeHandler;
188206
OmittedExpression?: INodeHandler;
207+
// Misc
208+
TemplateSpan?: INodeHandler;
189209
// Element
190210
Block?: INodeHandler;
191211
VariableStatement?: INodeHandler;
@@ -196,44 +216,61 @@ module tsgen {
196216
WhileStatement?: INodeHandler;
197217
ForStatement?: INodeHandler;
198218
ForInStatement?: INodeHandler;
219+
ForOfStatement?: INodeHandler;
199220
ContinueStatement?: INodeHandler;
200221
BreakStatement?: INodeHandler;
201222
ReturnStatement?: INodeHandler;
202223
WithStatement?: INodeHandler;
203224
SwitchStatement?: INodeHandler;
204-
CaseClause?: INodeHandler;
205-
DefaultClause?: INodeHandler;
206225
LabeledStatement?: INodeHandler;
207226
ThrowStatement?: INodeHandler;
208227
TryStatement?: INodeHandler;
209-
TryBlock?: INodeHandler;
210-
CatchBlock?: INodeHandler;
211-
FinallyBlock?: INodeHandler;
212228
DebuggerStatement?: INodeHandler;
213229
VariableDeclaration?: INodeHandler;
230+
VariableDeclarationList?: INodeHandler;
214231
FunctionDeclaration?: INodeHandler;
215-
FunctionBlock?: INodeHandler;
216232
ClassDeclaration?: INodeHandler;
217233
InterfaceDeclaration?: INodeHandler;
218234
TypeAliasDeclaration?: INodeHandler;
219235
EnumDeclaration?: INodeHandler;
220236
ModuleDeclaration?: INodeHandler;
221237
ModuleBlock?: INodeHandler;
238+
CaseBlock?: INodeHandler;
239+
ImportEqualsDeclaration?: INodeHandler;
222240
ImportDeclaration?: INodeHandler;
241+
ImportClause?: INodeHandler;
242+
NamespaceImport?: INodeHandler;
243+
NamedImports?: INodeHandler;
244+
ImportSpecifier?: INodeHandler;
223245
ExportAssignment?: INodeHandler;
246+
ExportDeclaration?: INodeHandler;
247+
NamedExports?: INodeHandler;
248+
ExportSpecifier?: INodeHandler;
249+
250+
// Module references
251+
ExternalModuleReference?: INodeHandler;
252+
253+
// Clauses
254+
CaseClause?: INodeHandler;
255+
DefaultClause?: INodeHandler;
256+
HeritageClause?: INodeHandler;
257+
CatchClause?: INodeHandler;
258+
259+
// Property assignments
260+
PropertyAssignment?: INodeHandler;
261+
ShorthandPropertyAssignment?: INodeHandler;
262+
224263
// Enum
225264
EnumMember?: INodeHandler;
226265
// Top-level nodes
227266
SourceFile?: INodeHandler;
228-
Program?: INodeHandler;
267+
229268
// Synthesized list
230269
SyntaxList?: INodeHandler;
231-
// Enum value count
232-
Count?: INodeHandler;
233270

234271
default?: INodeHandler;
235-
operator?: INodeHandler;
236-
binaryOperator?: INodeHandler;
272+
operator?: INodeHandler;
273+
binaryOperator?: INodeHandler;
237274
}
238275

239276

@@ -243,8 +280,12 @@ module tsgen {
243280

244281
interface IGenericWalker {
245282
[k:string]:tsgen.INodeHandler;
246-
default:tsgen.INodeHandler;
247-
binaryOperator:tsgen.INodeHandler;
283+
default:tsgen.INodeHandler;
284+
binaryOperator:tsgen.INodeHandler;
285+
}
286+
287+
export function getJsDocComments(node:any, sourcefile:any):CommentRange[] {
288+
return ts.getJsDocComments(node, sourcefile);
248289
}
249290

250291
export function walkProgram(filenames:string[], nodeHandler:(context: any, node: any, after: boolean) => boolean) {
@@ -253,50 +294,50 @@ module tsgen {
253294

254295
export function walkProgramNodes(filenames:string[], nodeWalker:tsgen.INodeWalker) {
255296

256-
var walker:IGenericWalker = <IGenericWalker>nodeWalker;
257-
var sk = tsgen.SyntaxKind;
297+
var walker:IGenericWalker = <IGenericWalker>nodeWalker;
298+
var sk = tsgen.SyntaxKind;
258299

259-
for (var i = 0; i < sk.Count; ++i) {
260-
var k = sk[i];
261-
if (null == walker[k]) {
262-
if (i >= sk.FirstBinaryOperator && i <= sk.LastBinaryOperator) {
263-
walker[k] = walker.binaryOperator || walker.default;
264-
} else {
265-
walker[k] = walker.default;
266-
}
267-
}
268-
}
300+
for (var i = 0; i < sk.Count; ++i) {
301+
var k = sk[i];
302+
if (null == walker[k]) {
303+
if (i >= sk.FirstBinaryOperator && i <= sk.LastBinaryOperator) {
304+
walker[k] = walker.binaryOperator || walker.default;
305+
} else {
306+
walker[k] = walker.default;
307+
}
308+
}
309+
}
269310
ts.walkProgram(filenames, (context, node, after)=>walker[sk[node.kind]](node, after, context));
270311
}
271312

272313

273314
interface IGenericVisitor {
274-
[k:string]: (n:ts.Node)=>void;
315+
[k:string]: (n:ts.Node)=>void;
275316
}
276317

277318
class NodeVisitor {
278-
walk(n:ts.Node):boolean {
279-
this.visit(n);
280-
return false;
281-
}
282-
visit(n:ts.Node) {
283-
var k = getNodeKind(n);
284-
var m = (<IGenericVisitor><any>this)[k];
285-
if (m) m.call(this,n);
319+
walk(n:ts.Node):boolean {
320+
this.visit(n);
321+
return false;
322+
}
323+
visit(n:ts.Node) {
324+
var k = getNodeKind(n);
325+
var m = (<IGenericVisitor><any>this)[k];
326+
if (m) m.call(this,n);
286327

287-
}
328+
}
288329
}
289330
}
290331

291332
/** for node.js: */
292333
declare var module: {
293-
exports: any;
294-
require(id: string): any;
295-
id: string;
296-
filename: string;
297-
loaded: boolean;
298-
parent: any;
299-
children: any[];
334+
exports: any;
335+
require(id: string): any;
336+
id: string;
337+
filename: string;
338+
loaded: boolean;
339+
parent: any;
340+
children: any[];
300341
};
301342

302343
(module).exports = tsgen;

0 commit comments

Comments
 (0)