Skip to content

Commit a934d50

Browse files
committed
Move symbolDisplayPartKind to services side
1 parent 77a93d2 commit a934d50

File tree

4 files changed

+81
-58
lines changed

4 files changed

+81
-58
lines changed

src/compiler/checker.ts

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,16 @@ module ts {
3333
if (stringWriters.length == 0) {
3434
var str = "";
3535

36+
var writeText: (text: string) => void = text => str += text;
3637
return {
3738
string: () => str,
38-
writeKind: text => str += text,
39-
writeSymbol: text => str += text,
39+
writeKeyword: writeText,
40+
writeOperator: writeText,
41+
writePunctuation: writeText,
42+
writeSpace: writeText,
43+
writeStringLiteral: writeText,
44+
writeParameter: writeText,
45+
writeSymbol: writeText,
4046

4147
// Completely ignore indentation for string writers. And map newlines to
4248
// a single space.
@@ -945,19 +951,19 @@ module ts {
945951
}
946952

947953
function writeKeyword(writer: SymbolWriter, kind: SyntaxKind) {
948-
writer.writeKind(tokenToString(kind), SymbolDisplayPartKind.keyword);
954+
writer.writeKeyword(tokenToString(kind));
949955
}
950956

951957
function writePunctuation(writer: SymbolWriter, kind: SyntaxKind) {
952-
writer.writeKind(tokenToString(kind), SymbolDisplayPartKind.punctuation);
958+
writer.writePunctuation(tokenToString(kind));
953959
}
954960

955961
function writeOperator(writer: SymbolWriter, kind: SyntaxKind) {
956-
writer.writeKind(tokenToString(kind), SymbolDisplayPartKind.operator);
962+
writer.writeOperator(tokenToString(kind));
957963
}
958964

959965
function writeSpace(writer: SymbolWriter) {
960-
writer.writeKind(" ", SymbolDisplayPartKind.space);
966+
writer.writeSpace(" ");
961967
}
962968

963969
function symbolToString(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags): string {
@@ -1076,8 +1082,8 @@ module ts {
10761082
// Write undefined/null type as any
10771083
if (type.flags & TypeFlags.Intrinsic) {
10781084
// Special handling for unknown / resolving types, they should show up as any and not unknown or __resolving
1079-
writer.writeKind(!(flags & TypeFormatFlags.WriteOwnNameForAnyLike) &&
1080-
(type.flags & TypeFlags.Any) ? "any" : (<IntrinsicType>type).intrinsicName, SymbolDisplayPartKind.keyword);
1085+
writer.writeKeyword(!(flags & TypeFormatFlags.WriteOwnNameForAnyLike) &&
1086+
(type.flags & TypeFlags.Any) ? "any" : (<IntrinsicType>type).intrinsicName);
10811087
}
10821088
else if (type.flags & TypeFlags.Reference) {
10831089
writeTypeReference(<TypeReference>type);
@@ -1092,7 +1098,7 @@ module ts {
10921098
writeAnonymousType(<ObjectType>type, flags);
10931099
}
10941100
else if (type.flags & TypeFlags.StringLiteral) {
1095-
writer.writeKind((<StringLiteralType>type).text, SymbolDisplayPartKind.stringLiteral);
1101+
writer.writeStringLiteral((<StringLiteralType>type).text);
10961102
}
10971103
else {
10981104
// Should never get here
@@ -1225,7 +1231,7 @@ module ts {
12251231
if (resolved.stringIndexType) {
12261232
// [x: string]:
12271233
writePunctuation(writer, SyntaxKind.OpenBracketToken);
1228-
writer.writeKind("x", SymbolDisplayPartKind.parameterName);
1234+
writer.writeParameter("x");
12291235
writePunctuation(writer, SyntaxKind.ColonToken);
12301236
writeSpace(writer);
12311237
writeKeyword(writer, SyntaxKind.StringKeyword);
@@ -1239,7 +1245,7 @@ module ts {
12391245
if (resolved.numberIndexType) {
12401246
// [x: number]:
12411247
writePunctuation(writer, SyntaxKind.OpenBracketToken);
1242-
writer.writeKind("x", SymbolDisplayPartKind.parameterName);
1248+
writer.writeParameter("x");
12431249
writePunctuation(writer, SyntaxKind.ColonToken);
12441250
writeSpace(writer);
12451251
writeKeyword(writer, SyntaxKind.NumberKeyword);

src/compiler/emitter.ts

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@
44
/// <reference path="parser.ts"/>
55

66
module ts {
7-
interface EmitTextWriter extends SymbolWriter {
7+
interface EmitTextWriter {
88
write(s: string): void;
9+
writeLine(): void;
10+
increaseIndent(): void;
11+
decreaseIndent(): void;
912
getText(): string;
1013
rawWrite(s: string): void;
1114
writeLiteral(s: string): void;
@@ -15,6 +18,9 @@ module ts {
1518
getIndent(): number;
1619
}
1720

21+
interface EmitTextWriterWithSymbolWriter extends EmitTextWriter, SymbolWriter{
22+
}
23+
1824
var indentStrings: string[] = ["", " "];
1925
export function getIndentString(level: number) {
2026
if (indentStrings[level] === undefined) {
@@ -103,7 +109,7 @@ module ts {
103109
};
104110
}
105111

106-
function createTextWriter(trackSymbol: (symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags)=> void): EmitTextWriter {
112+
function createTextWriter(): EmitTextWriter {
107113
var output = "";
108114
var indent = 0;
109115
var lineStart = true;
@@ -149,17 +155,8 @@ module ts {
149155
}
150156
}
151157

152-
function writeKind(text: string, kind: SymbolDisplayPartKind) {
153-
write(text);
154-
}
155-
function writeSymbol(text: string, symbol: Symbol) {
156-
write(text);
157-
}
158158
return {
159159
write: write,
160-
trackSymbol: trackSymbol,
161-
writeKind: writeKind,
162-
writeSymbol: writeSymbol,
163160
rawWrite: rawWrite,
164161
writeLiteral: writeLiteral,
165162
writeLine: writeLine,
@@ -170,7 +167,6 @@ module ts {
170167
getLine: () => lineCount + 1,
171168
getColumn: () => lineStart ? indent * getIndentSize() + 1 : output.length - linePos + 1,
172169
getText: () => output,
173-
clear: () => { }
174170
};
175171
}
176172

@@ -318,7 +314,7 @@ module ts {
318314
}
319315

320316
function emitJavaScript(jsFilePath: string, root?: SourceFile) {
321-
var writer = createTextWriter(trackSymbol);
317+
var writer = createTextWriter();
322318
var write = writer.write;
323319
var writeLine = writer.writeLine;
324320
var increaseIndent = writer.increaseIndent;
@@ -374,8 +370,6 @@ module ts {
374370
/** Sourcemap data that will get encoded */
375371
var sourceMapData: SourceMapData;
376372

377-
function trackSymbol(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags) { }
378-
379373
function initializeEmitterWithSourceMaps() {
380374
var sourceMapDir: string; // The directory in which sourcemap will be
381375

@@ -2314,7 +2308,7 @@ module ts {
23142308
}
23152309

23162310
function emitDeclarations(jsFilePath: string, root?: SourceFile) {
2317-
var writer = createTextWriter(trackSymbol);
2311+
var writer = createTextWriterWithSymbolWriter();
23182312
var write = writer.write;
23192313
var writeLine = writer.writeLine;
23202314
var increaseIndent = writer.increaseIndent;
@@ -2338,11 +2332,24 @@ module ts {
23382332
typeName?: Identifier
23392333
}
23402334

2335+
function createTextWriterWithSymbolWriter(): EmitTextWriterWithSymbolWriter {
2336+
var writer = <EmitTextWriterWithSymbolWriter>createTextWriter();
2337+
writer.trackSymbol = trackSymbol;
2338+
writer.writeKeyword = writer.write;
2339+
writer.writeOperator = writer.write;
2340+
writer.writePunctuation = writer.write;
2341+
writer.writeSpace = writer.write;
2342+
writer.writeStringLiteral = writer.writeLiteral;
2343+
writer.writeParameter = writer.write;
2344+
writer.writeSymbol = writer.write;
2345+
return writer;
2346+
}
2347+
23412348
function writeAsychronousImportDeclarations(importDeclarations: ImportDeclaration[]) {
23422349
var oldWriter = writer;
23432350
forEach(importDeclarations, aliasToWrite => {
23442351
var aliasEmitInfo = forEach(aliasDeclarationEmitInfo, declEmitInfo => declEmitInfo.declaration === aliasToWrite ? declEmitInfo : undefined);
2345-
writer = createTextWriter(trackSymbol);
2352+
writer = createTextWriterWithSymbolWriter();
23462353
for (var declarationIndent = aliasEmitInfo.indent; declarationIndent; declarationIndent--) {
23472354
writer.increaseIndent();
23482355
}

src/compiler/types.ts

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -666,7 +666,12 @@ module ts {
666666
}
667667

668668
export interface SymbolWriter {
669-
writeKind(text: string, kind: SymbolDisplayPartKind): void;
669+
writeKeyword(text: string): void;
670+
writeOperator(text: string): void;
671+
writePunctuation(text: string): void;
672+
writeSpace(text: string): void;
673+
writeStringLiteral(text: string): void;
674+
writeParameter(text: string): void;
670675
writeSymbol(text: string, symbol: Symbol): void;
671676
writeLine(): void;
672677
increaseIndent(): void;
@@ -1215,32 +1220,7 @@ module ts {
12151220
tab = 0x09, // \t
12161221
verticalTab = 0x0B, // \v
12171222
}
1218-
1219-
export enum SymbolDisplayPartKind {
1220-
aliasName,
1221-
className,
1222-
enumName,
1223-
fieldName,
1224-
interfaceName,
1225-
keyword,
1226-
lineBreak,
1227-
numericLiteral,
1228-
stringLiteral,
1229-
localName,
1230-
methodName,
1231-
moduleName,
1232-
operator,
1233-
parameterName,
1234-
propertyName,
1235-
punctuation,
1236-
space,
1237-
text,
1238-
typeParameterName,
1239-
enumMemberName,
1240-
functionName,
1241-
regularExpressionLiteral,
1242-
}
1243-
1223+
12441224
export interface CancellationToken {
12451225
isCancellationRequested(): boolean;
12461226
}

src/services/services.ts

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -994,12 +994,37 @@ module ts {
994994
containerKind: string;
995995
containerName: string;
996996
}
997-
997+
998+
export enum SymbolDisplayPartKind {
999+
aliasName,
1000+
className,
1001+
enumName,
1002+
fieldName,
1003+
interfaceName,
1004+
keyword,
1005+
lineBreak,
1006+
numericLiteral,
1007+
stringLiteral,
1008+
localName,
1009+
methodName,
1010+
moduleName,
1011+
operator,
1012+
parameterName,
1013+
propertyName,
1014+
punctuation,
1015+
space,
1016+
text,
1017+
typeParameterName,
1018+
enumMemberName,
1019+
functionName,
1020+
regularExpressionLiteral,
1021+
}
1022+
9981023
export interface SymbolDisplayPart {
9991024
text: string;
10001025
kind: string;
10011026
}
1002-
1027+
10031028
export interface QuickInfo {
10041029
kind: string;
10051030
kindModifiers: string;
@@ -1306,7 +1331,12 @@ module ts {
13061331
resetWriter();
13071332
return {
13081333
displayParts: () => displayParts,
1309-
writeKind: writeKind,
1334+
writeKeyword: text => writeKind(text, SymbolDisplayPartKind.keyword),
1335+
writeOperator: text => writeKind(text, SymbolDisplayPartKind.operator),
1336+
writePunctuation: text => writeKind(text, SymbolDisplayPartKind.punctuation),
1337+
writeSpace: text => writeKind(text, SymbolDisplayPartKind.space),
1338+
writeStringLiteral: text => writeKind(text, SymbolDisplayPartKind.stringLiteral),
1339+
writeParameter: text => writeKind(text, SymbolDisplayPartKind.parameterName),
13101340
writeSymbol: writeSymbol,
13111341
writeLine: writeLine,
13121342
increaseIndent: () => { indent++; },

0 commit comments

Comments
 (0)