mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-16 07:13:45 -05:00
Add an IAccessorSyntax interface.
This commit is contained in:
@@ -1510,7 +1510,7 @@ var definitions = [
|
||||
{
|
||||
name: 'GetAccessorSyntax',
|
||||
baseType: 'ISyntaxNode',
|
||||
interfaces: ['IMemberDeclarationSyntax', 'IPropertyAssignmentSyntax'],
|
||||
interfaces: ['IAccessorSyntax'],
|
||||
children: [
|
||||
{ name: 'modifiers', isList: true, elementType: 'ISyntaxToken', isTypeScriptSpecific: true },
|
||||
{ name: 'getKeyword', isToken: true, excludeFromAST: true },
|
||||
@@ -1522,7 +1522,7 @@ var definitions = [
|
||||
{
|
||||
name: 'SetAccessorSyntax',
|
||||
baseType: 'ISyntaxNode',
|
||||
interfaces: ['IMemberDeclarationSyntax', 'IPropertyAssignmentSyntax'],
|
||||
interfaces: ['IAccessorSyntax'],
|
||||
children: [
|
||||
{ name: 'modifiers', isList: true, elementType: 'ISyntaxToken', isTypeScriptSpecific: true },
|
||||
{ name: 'setKeyword', isToken: true, excludeFromAST: true },
|
||||
@@ -1907,43 +1907,6 @@ function getSafeName(child) {
|
||||
}
|
||||
return child.name;
|
||||
}
|
||||
function generateBrands(definition, accessibility) {
|
||||
var properties = "";
|
||||
var types = [];
|
||||
if (definition.interfaces) {
|
||||
var ifaces = definition.interfaces.slice(0);
|
||||
var i;
|
||||
for (i = 0; i < ifaces.length; i++) {
|
||||
var current = ifaces[i];
|
||||
while (current !== undefined) {
|
||||
if (!TypeScript.ArrayUtilities.contains(ifaces, current)) {
|
||||
ifaces.push(current);
|
||||
}
|
||||
current = interfaces[current];
|
||||
}
|
||||
}
|
||||
for (i = 0; i < ifaces.length; i++) {
|
||||
var type = ifaces[i];
|
||||
type = getStringWithoutSuffix(type);
|
||||
if (isInterface(type)) {
|
||||
type = "_" + type.substr(1, 1).toLowerCase() + type.substr(2) + "Brand";
|
||||
}
|
||||
types.push(type);
|
||||
}
|
||||
}
|
||||
types.push("_syntaxNodeOrTokenBrand");
|
||||
if (types.length > 0) {
|
||||
properties += " ";
|
||||
for (var i = 0; i < types.length; i++) {
|
||||
if (accessibility) {
|
||||
properties += " public ";
|
||||
}
|
||||
properties += types[i] + ": any;";
|
||||
}
|
||||
properties += "\r\n";
|
||||
}
|
||||
return properties;
|
||||
}
|
||||
function generateConstructorFunction(definition) {
|
||||
var result = " export var " + definition.name + ": " + getNameWithoutSuffix(definition) + "Constructor = <any>function(data: number";
|
||||
for (var i = 0; i < definition.children.length; i++) {
|
||||
@@ -2246,32 +2209,16 @@ function generateVisitor() {
|
||||
result += "\r\n}";
|
||||
return result;
|
||||
}
|
||||
function generateServicesUtilities() {
|
||||
var result = "";
|
||||
result += "module TypeScript {\r\n";
|
||||
result += " export function childCount(element: ISyntaxElement): number {\r\n";
|
||||
result += " if (isList(element)) { return (<ISyntaxNodeOrToken[]>element).length; }\r\n";
|
||||
result += " return (<ISyntaxNodeOrToken>element).childCount;\r\n";
|
||||
result += " }\r\n\r\n";
|
||||
result += " export function childAt(element: ISyntaxElement, index: number): ISyntaxElement {\r\n";
|
||||
result += " if (isList(element)) { return (<ISyntaxNodeOrToken[]>element)[index]; }\r\n";
|
||||
result += " return (<ISyntaxNodeOrToken>element).childAt(index);\r\n";
|
||||
result += " }\r\n";
|
||||
result += "}";
|
||||
return result;
|
||||
}
|
||||
var syntaxNodesConcrete = generateNodes();
|
||||
var syntaxInterfaces = generateSyntaxInterfaces();
|
||||
var walker = generateWalker();
|
||||
var scannerUtilities = generateScannerUtilities();
|
||||
var visitor = generateVisitor();
|
||||
var servicesUtilities = generateServicesUtilities();
|
||||
var utilities = generateUtilities();
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxNodes.concrete.generated.ts", syntaxNodesConcrete, false);
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxInterfaces.generated.ts", syntaxInterfaces, false);
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxWalker.generated.ts", walker, false);
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\scannerUtilities.generated.ts", scannerUtilities, false);
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxVisitor.generated.ts", visitor, false);
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxUtilities.generated.ts", servicesUtilities, false);
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\utilities.generated.ts", utilities, false);
|
||||
//# sourceMappingURL=file:///C:/VSPro_1/src/typescript/public_cyrusn/src/services/syntax/SyntaxGenerator.js.map
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1134,7 +1134,7 @@ module TypeScript.Parser {
|
||||
return isPropertyName(peekToken(modifierCount + 1), inErrorRecovery);
|
||||
}
|
||||
|
||||
function parseAccessor(checkForStrictMode: boolean): IPropertyAssignmentSyntax {
|
||||
function parseAccessor(checkForStrictMode: boolean): IAccessorSyntax {
|
||||
var modifiers = parseModifiers();
|
||||
var _currenToken = currentToken();
|
||||
var tokenKind = _currenToken.kind;
|
||||
|
||||
@@ -450,10 +450,19 @@ module TypeScript {
|
||||
_memberDeclarationBrand: any;
|
||||
}
|
||||
|
||||
export interface IPropertyAssignmentSyntax extends IClassElementSyntax {
|
||||
export interface IPropertyAssignmentSyntax extends ISyntaxNode {
|
||||
_propertyAssignmentBrand: any;
|
||||
}
|
||||
|
||||
export interface IAccessorSyntax extends IPropertyAssignmentSyntax, IMemberDeclarationSyntax {
|
||||
_accessorBrand: any;
|
||||
|
||||
modifiers: ISyntaxToken[];
|
||||
propertyName: ISyntaxToken;
|
||||
callSignature: CallSignatureSyntax;
|
||||
block: BlockSyntax;
|
||||
}
|
||||
|
||||
export interface ISwitchClauseSyntax extends ISyntaxNode {
|
||||
_switchClauseBrand: any;
|
||||
statements: IStatementSyntax[];
|
||||
|
||||
@@ -660,7 +660,7 @@ var definitions:ITypeDefinition[] = [
|
||||
<any>{
|
||||
name: 'GetAccessorSyntax',
|
||||
baseType: 'ISyntaxNode',
|
||||
interfaces: ['IMemberDeclarationSyntax', 'IPropertyAssignmentSyntax' ],
|
||||
interfaces: ['IAccessorSyntax' ],
|
||||
children: [
|
||||
<any>{ name: 'modifiers', isList: true, elementType: 'ISyntaxToken', isTypeScriptSpecific: true },
|
||||
<any>{ name: 'getKeyword', isToken: true, excludeFromAST: true },
|
||||
@@ -672,7 +672,7 @@ var definitions:ITypeDefinition[] = [
|
||||
<any>{
|
||||
name: 'SetAccessorSyntax',
|
||||
baseType: 'ISyntaxNode',
|
||||
interfaces: ['IMemberDeclarationSyntax', 'IPropertyAssignmentSyntax'],
|
||||
interfaces: ['IAccessorSyntax'],
|
||||
children: [
|
||||
<any>{ name: 'modifiers', isList: true, elementType: 'ISyntaxToken', isTypeScriptSpecific: true },
|
||||
<any>{ name: 'setKeyword', isToken: true, excludeFromAST: true },
|
||||
|
||||
@@ -182,7 +182,7 @@ module TypeScript {
|
||||
}
|
||||
export interface IndexMemberDeclarationConstructor { new (data: number, modifiers: ISyntaxToken[], indexSignature: IndexSignatureSyntax, semicolonToken: ISyntaxToken): IndexMemberDeclarationSyntax }
|
||||
|
||||
export interface GetAccessorSyntax extends ISyntaxNode, IMemberDeclarationSyntax, IPropertyAssignmentSyntax {
|
||||
export interface GetAccessorSyntax extends ISyntaxNode, IAccessorSyntax {
|
||||
modifiers: ISyntaxToken[];
|
||||
getKeyword: ISyntaxToken;
|
||||
propertyName: ISyntaxToken;
|
||||
@@ -191,7 +191,7 @@ module TypeScript {
|
||||
}
|
||||
export interface GetAccessorConstructor { new (data: number, modifiers: ISyntaxToken[], getKeyword: ISyntaxToken, propertyName: ISyntaxToken, callSignature: CallSignatureSyntax, block: BlockSyntax): GetAccessorSyntax }
|
||||
|
||||
export interface SetAccessorSyntax extends ISyntaxNode, IMemberDeclarationSyntax, IPropertyAssignmentSyntax {
|
||||
export interface SetAccessorSyntax extends ISyntaxNode, IAccessorSyntax {
|
||||
modifiers: ISyntaxToken[];
|
||||
setKeyword: ISyntaxToken;
|
||||
propertyName: ISyntaxToken;
|
||||
|
||||
Reference in New Issue
Block a user