Skip to content

Organize Imports: Debug Failure. Did not expect InterfaceDeclaration to have an Identifier in its trivia #22924

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
mjbvz opened this issue Mar 27, 2018 · 7 comments
Labels
Bug A bug in TypeScript Domain: TSServer Issues related to the TSServer Fixed A PR has been merged for this issue

Comments

@mjbvz
Copy link
Contributor

mjbvz commented Mar 27, 2018

From microsoft/vscode#46698

TypeScript Version: 2.9.0-dev.20180327

Search Terms:

  • Organize imports

Code

  1. In the vscode codebase
  2. Open modes.ts: https://github.com/Microsoft/vscode/blob/master/src/vs/editor/common/modes.ts
  3. Delete the { IMarkerData } import
  4. Run Organize imports

Bug:
Debug failure:

[Error  - 13:54:12] 'organizeImports' request failed with error.
Error processing request. Debug Failure. Did not expect InterfaceDeclaration to have an Identifier in its trivia
Error: Debug Failure. Did not expect InterfaceDeclaration to have an Identifier in its trivia
    at NodeObject.addSyntheticNodes (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:83936:34)
    at processNode (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:83980:29)
    at NodeObject.createChildren (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:83994:21)
    at NodeObject.getChildren (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:84020:22)
    at getTokenAtPositionWorker (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:66397:43)
    at getTouchingToken (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:66384:16)
    at Object.getTouchingPropertyName (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:66380:16)
    at /Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:71736:47
    at Array.some (native)
    at Object.isSymbolReferencedInFile (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:71735:85)
    at isDeclarationUsed (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:74069:102)
    at /Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:74055:95
    at Array.filter (native)
    at removeUnusedImports (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:74055:66)
    at /Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:74006:43
    at Object.flatMap (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:1774:25)
    at organizeImportsWorker (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:74004:41)
    at Object.organizeImports (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:73989:13)
    at Object.organizeImports (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:85310:39)
    at IOSession.Session.organizeImports (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:92327:60)
    at Session.handlers.ts.createMapFromTemplate._a.(anonymous function) (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:91225:61)
    at /Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:92510:88
    at IOSession.Session.executeWithRequestId (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:92501:28)
    at IOSession.Session.executeCommand (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:92510:33)
    at IOSession.Session.onMessage (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:92530:35)
    at Interface.<anonymous> (/Users/matb/projects/vscode/node_modules/typescript/lib/tsserver.js:93738:27)
    at emitOne (events.js:96:13)
    at Interface.emit (events.js:191:7)
    at Interface._onLine (readline.js:241:10)
    at Interface._normalWrite (readline.js:384:12)
    at Socket.ondata (readline.js:101:10)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:191:7)
    at readableAddChunk (_stream_readable.js:178:18)
    at Socket.Readable.push (_stream_readable.js:136:10)
    at Pipe.onread (net.js:560:20)

Also occurs on references

@mhegazy mhegazy added the Bug A bug in TypeScript label Mar 27, 2018
@mhegazy mhegazy added this to the TypeScript 2.8.2 milestone Mar 27, 2018
@mhegazy mhegazy added the Domain: Organize Imports Issues with the organize imports feature label Mar 27, 2018
@ghost
Copy link

ghost commented Mar 28, 2018

Not an organize-imports bug, but a tsserver bug. Found a simpler repro:

  • Put the following in a file a.ts in an empty project:
import a from 'a/aaaaaaa/aaaaaaa/aaaaaa/aaaaaaa';
import b from 'b';
import c from 'c';

/** @internal */
export class LanguageIdentifier {}
  • Reload vscode.
  • Highlight the first line (incl. the newline after it) and delete.
  • Check the log. A call to getOutliningSpans will have failed. There is no such error if we refresh, so this has to do with the server state getting messed up.

@ghost
Copy link

ghost commented Mar 28, 2018

tsserver log:

Info 0    [11:17:21.276] Starting TS Server
Info 1    [11:17:21.278] Version: 2.9.0-dev.20180325
Info 2    [11:17:21.279] Arguments: /usr/share/code-insiders/code-insiders /home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js --useInferredProjectPerProjectRoot --enableTelemetry --cancellationPipeName /tmp/vscode-tscancellation-f4c7b6f890d01ef4b69c.sock* --logVerbosity verbose --logFile /home/andy/.config/Code - Insiders/logs/20180328T105646/vscode.typescript-language-features_6/tsserver-log-tIEXdL/tsserver.log --locale en
Info 3    [11:17:21.279] Platform: linux NodeVersion: 7 CaseSensitive: true
Info 4    [11:17:21.281] Provided types map file "/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js/../typesMap.json" doesn't exist
Info 5    [11:17:21.281] Binding...
Info 6    [11:17:21.293] event:
    {"seq":0,"type":"event","event":"typingsInstallerPid","body":{"pid":21697}}
Info 7    [11:17:21.295] request:
    {"seq":0,"type":"request","command":"configure","arguments":{"hostInfo":"vscode"}}
Info 8    [11:17:21.295] Host information vscode
Info 9    [11:17:21.295] response:
    {"seq":0,"type":"response","command":"configure","request_seq":0,"success":true}
Perf 10   [11:17:21.295] 0::configure: async elapsed time (in milliseconds) 0.7476
Info 11   [11:17:21.296] request:
    {"seq":1,"type":"request","command":"compilerOptionsForInferredProjects","arguments":{"options":{"module":"commonjs","target":"es2016","jsx":"preserve","allowJs":true,"allowSyntheticDefaultImports":true,"allowNonTsExtensions":true}}}
Info 12   [11:17:21.297] Scheduled: *ensureProjectForOpenFiles*
Perf 13   [11:17:21.297] 1::compilerOptionsForInferredProjects: elapsed time (in milliseconds) 1.0700
Info 14   [11:17:21.297] response:
    {"seq":0,"type":"response","command":"compilerOptionsForInferredProjects","request_seq":1,"success":true,"body":true}
Info 15   [11:17:21.297] request:
    {"seq":2,"type":"request","command":"open","arguments":{"file":"/home/andy/sample/ts/src/a.ts","fileContent":"import a from 'a/aaaaaaa/aaaaaaa/aaaaaa/aaaaaaa';\nimport b from 'b';\nimport c from 'c';\n\n/** @internal */\nexport class LanguageIdentifier {}\n","scriptKindName":"TS","projectRootPath":"/home/andy/sample/ts"}}
Info 16   [11:17:21.299] Search path: /home/andy/sample/ts/src
Info 17   [11:17:21.299] ConfigFilePresence:: Current Watches: :: File: /home/andy/sample/ts/src/tsconfig.json Currently impacted open files: RootsOfInferredProjects:  OtherOpenFiles: /home/andy/sample/ts/src/a.ts Status: File added to open files impacted by this config file
Info 18   [11:17:21.300] ConfigFilePresence:: Current Watches: :: File: /home/andy/sample/ts/src/jsconfig.json Currently impacted open files: RootsOfInferredProjects:  OtherOpenFiles: /home/andy/sample/ts/src/a.ts Status: File added to open files impacted by this config file
Info 19   [11:17:21.300] ConfigFilePresence:: Current Watches: :: File: /home/andy/sample/ts/tsconfig.json Currently impacted open files: RootsOfInferredProjects:  OtherOpenFiles: /home/andy/sample/ts/src/a.ts Status: File added to open files impacted by this config file
Info 20   [11:17:21.300] For info: /home/andy/sample/ts/src/a.ts :: Config file name: /home/andy/sample/ts/tsconfig.json
Info 21   [11:17:21.314] Opened configuration file /home/andy/sample/ts/tsconfig.json
Info 22   [11:17:21.318] FileWatcher:: Added:: WatchInfo: /home/andy/sample/ts/tsconfig.json 2000 Project: /home/andy/sample/ts/tsconfig.json WatchType: Config file for the program
Info 23   [11:17:21.318] DirectoryWatcher:: Added:: WatchInfo: /home/andy/sample/ts 1 Project: /home/andy/sample/ts/tsconfig.json WatchType: Wild card directory
Info 24   [11:17:21.325] Starting updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json
Info 25   [11:17:21.346] DirectoryWatcher:: Added:: WatchInfo: /home/andy/sample/ts 1 Project: /home/andy/sample/ts/tsconfig.json WatchType: Directory of Failed lookup locations in module resolution
Info 26   [11:17:21.357] FileWatcher:: Added:: WatchInfo: /home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/lib.d.ts 500 Project:  WatchType: Closed Script info
Info 27   [11:17:21.791] DirectoryWatcher:: Added:: WatchInfo: /home/andy/sample/ts/node_modules/@types 1 Project: /home/andy/sample/ts/tsconfig.json WatchType: Type root directory
Info 28   [11:17:21.791] Finishing updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json Version: 1 structureChanged: true Elapsed: 466ms
Info 29   [11:17:21.792] Starting updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json
Info 30   [11:17:21.795] Finishing updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json Version: 2 structureChanged: false Elapsed: 3ms
Info 31   [11:17:21.796] event:
    {"seq":0,"type":"event","event":"telemetry","body":{"telemetryEventName":"projectInfo","payload":{"projectId":"b9db5ecb5129c341352ecb6b5fe49524","fileStats":{"js":0,"jsx":0,"ts":1,"tsx":0,"dts":1},"compilerOptions":{},"typeAcquisition":{"enable":false,"include":false,"exclude":false},"extends":false,"files":false,"include":false,"exclude":false,"compileOnSave":false,"configFileName":"tsconfig.json","projectType":"configured","languageServiceEnabled":true,"version":"2.9.0-dev.20180325"}}}
Info 32   [11:17:21.796] event:
    {"seq":0,"type":"event","event":"configFileDiag","body":{"triggerFile":"/home/andy/sample/ts/src/a.ts","configFile":"/home/andy/sample/ts/tsconfig.json","diagnostics":[]}}
Info 33   [11:17:21.797] Project '/home/andy/sample/ts/tsconfig.json' (Configured) 0
Info 33   [11:17:21.797] 	Files (2)
	/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/lib.d.ts
	/home/andy/sample/ts/src/a.ts

Info 33   [11:17:21.797] -----------------------------------------------
Info 33   [11:17:21.797] Open files: 
Info 33   [11:17:21.797] 	FileName: /home/andy/sample/ts/src/a.ts ProjectRootPath: /home/andy/sample/ts
Info 33   [11:17:21.797] 		Projects: /home/andy/sample/ts/tsconfig.json
Perf 33   [11:17:21.797] 2::open: async elapsed time (in milliseconds) 499.6789
Info 34   [11:17:21.797] request:
    {"seq":4,"type":"request","command":"occurrences","arguments":{"file":"/home/andy/sample/ts/src/a.ts","line":1,"offset":18}}
Info 35   [11:17:21.798] Starting updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json
Info 36   [11:17:21.798] Finishing updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json Version: 2 structureChanged: false Elapsed: 0ms
Perf 37   [11:17:21.802] 4::occurrences: elapsed time (in milliseconds) 5.4027
Info 38   [11:17:21.803] response:
    {"seq":0,"type":"response","command":"occurrences","request_seq":4,"success":true,"body":[{"start":{"line":1,"offset":16},"end":{"line":1,"offset":48},"file":"/home/andy/sample/ts/src/a.ts","isWriteAccess":false,"isInString":true}]}
Info 39   [11:17:21.803] Running: *ensureProjectForOpenFiles*
Info 40   [11:17:21.803] Structure before ensureProjectForOpenFiles:
Info 41   [11:17:21.803] Project '/home/andy/sample/ts/tsconfig.json' (Configured) 0
Info 41   [11:17:21.803] 	Files (2)
	/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/lib.d.ts
	/home/andy/sample/ts/src/a.ts

Info 41   [11:17:21.803] -----------------------------------------------
Info 41   [11:17:21.803] Open files: 
Info 41   [11:17:21.803] 	FileName: /home/andy/sample/ts/src/a.ts ProjectRootPath: /home/andy/sample/ts
Info 41   [11:17:21.803] 		Projects: /home/andy/sample/ts/tsconfig.json
Info 41   [11:17:21.803] Structure after ensureProjectForOpenFiles:
Info 42   [11:17:21.803] Project '/home/andy/sample/ts/tsconfig.json' (Configured) 0
Info 42   [11:17:21.803] 	Files (2)
	/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/lib.d.ts
	/home/andy/sample/ts/src/a.ts

Info 42   [11:17:21.803] -----------------------------------------------
Info 42   [11:17:21.803] Open files: 
Info 42   [11:17:21.803] 	FileName: /home/andy/sample/ts/src/a.ts ProjectRootPath: /home/andy/sample/ts
Info 42   [11:17:21.803] 		Projects: /home/andy/sample/ts/tsconfig.json
Info 42   [11:17:21.804] got projects updated in background, updating diagnostics for /home/andy/sample/ts/src/a.ts
Info 43   [11:17:21.804] event:
    {"seq":0,"type":"event","event":"projectsUpdatedInBackground","body":{"openFiles":["/home/andy/sample/ts/src/a.ts"]}}
Info 44   [11:17:21.804] request:
    {"seq":5,"type":"request","command":"getOutliningSpans","arguments":{"file":"/home/andy/sample/ts/src/a.ts"}}
Perf 45   [11:17:21.807] 5::getOutliningSpans: elapsed time (in milliseconds) 2.5533
Info 46   [11:17:21.807] response:
    {"seq":0,"type":"response","command":"getOutliningSpans","request_seq":5,"success":true,"body":[{"textSpan":{"start":{"line":5,"offset":1},"end":{"line":5,"offset":17}},"hintSpan":{"start":{"line":5,"offset":1},"end":{"line":5,"offset":17}},"bannerText":"...","autoCollapse":false},{"textSpan":{"start":{"line":6,"offset":32},"end":{"line":6,"offset":35}},"hintSpan":{"start":{"line":6,"offset":1},"end":{"line":6,"offset":35}},"bannerText":"...","autoCollapse":false}]}
Info 47   [11:17:21.808] request:
    {"seq":6,"type":"request","command":"getSupportedCodeFixes","arguments":null}
Perf 48   [11:17:21.808] 6::getSupportedCodeFixes: elapsed time (in milliseconds) 0.3240
Info 49   [11:17:21.808] response:
    {"seq":0,"type":"response","command":"getSupportedCodeFixes","request_seq":6,"success":true,"body":["1002","1003","1005","1006","1009","1010","1012","1014","1015","1016","1017","1018","1019","1020","1021","1022","1023","1024","1028","1029","1030","1031","1034","1035","1036","1038","1039","1040","1041","1042","1043","1044","1045","1046","1047","1048","1049","1051","1052","1053","1054","1055","1056","1057","1058","1059","1060","1061","1062","1063","1064","1066","1068","1070","1071","1079","1084","1085","1086","1089","1090","1091","1092","1093","1094","1095","1096","1097","1098","1099","1100","1101","1102","1103","1104","1105","1107","1108","1109","1110","1113","1114","1115","1116","1117","1118","1119","1120","1121","1122","1123","1124","1125","1126","1127","1128","1129","1130","1131","1132","1134","1135","1136","1137","1138","1139","1140","1141","1142","1144","1146","1147","1148","1149","1150","1155","1156","1157","1160","1161","1162","1163","1164","1165","1166","1168","1169","1170","1171","1172","1173","1174","1175","1176","1177","1178","1179","1180","1181","1182","1183","1184","1185","1186","1187","1188","1189","1190","1191","1192","1193","1194","1196","1197","1198","1199","1200","1202","1203","1205","1206","1207","1208","1209","1210","1211","1212","1213","1214","1215","1216","1218","1219","1220","1221","1222","1223","1224","1225","1226","1227","1228","1229","1230","1231","1232","1233","1234","1235","1236","1237","1238","1239","1240","1241","1242","1243","1244","1245","1246","1247","1248","1249","1250","1251","1252","1253","1254","1255","1300","1308","1312","1313","1314","1315","1316","1317","1318","1319","1320","1321","1322","1323","1324","1325","1326","1327","1328","1329","1330","1331","1332","1333","1334","1335","1336","1337","1338","2300","2301","2302","2303","2304","2305","2306","2307","2308","2309","2310","2311","2312","2313","2314","2315","2316","2317","2318","2319","2320","2321","2322","2323","2324","2325","2326","2327","2328","2329","2330","2331","2332","2333","2334","2335","2336","2337","2338","2339","2340","2341","2342","2343","2344","2345","2346","2347","2348","2349","2350","2351","2352","2353","2354","2355","2356","2357","2358","2359","2360","2361","2362","2363","2364","2365","2366","2368","2369","2370","2371","2372","2373","2374","2375","2376","2377","2378","2379","2380","2381","2382","2383","2384","2385","2386","2387","2388","2389","2390","2391","2392","2393","2394","2395","2396","2397","2399","2400","2401","2402","2403","2404","2405","2406","2407","2408","2409","2410","2411","2412","2413","2414","2415","2416","2417","2420","2422","2423","2424","2425","2426","2427","2428","2430","2431","2432","2433","2434","2435","2436","2437","2438","2439","2440","2441","2442","2443","2444","2445","2446","2447","2448","2449","2450","2451","2452","2453","2454","2455","2456","2457","2458","2459","2460","2461","2462","2463","2464","2465","2466","2467","2468","2469","2470","2471","2472","2473","2474","2475","2476","2477","2478","2479","2480","2481","2483","2484","2487","2488","2489","2490","2491","2492","2493","2494","2495","2496","2497","2498","2499","2500","2501","2502","2503","2504","2505","2506","2507","2508","2509","2510","2511","2512","2513","2514","2515","2516","2517","2518","2519","2520","2521","2522","2523","2524","2525","2526","2527","2528","2529","2530","2531","2532","2533","2534","2535","2536","2537","2538","2539","2540","2541","2542","2543","2544","2545","2546","2547","2548","2549","2550","2551","2552","2553","2554","2555","2556","2557","2558","2559","2560","2561","2562","2563","2564","2565","2566","2567","2600","2601","2602","2603","2604","2605","2606","2607","2608","2609","2649","2651","2652","2653","2654","2656","2657","2658","2659","2660","2661","2662","2663","2664","2665","2666","2667","2668","2669","2670","2671","2672","2673","2674","2675","2676","2677","2678","2679","2680","2681","2682","2683","2684","2685","2686","2687","2688","2689","2691","2692","2693","2694","2695","2696","2697","2698","2699","2700","2701","2702","2703","2704","2705","2706","2707","2708","2709","2710","2711","2712","2713","2714","2715","2716","2717","2718","2719","2720","2721","2722","2723","2724","4000","4002","4004","4006","4008","4010","4012","4014","4016","4019","4020","4022","4023","4024","4025","4026","4027","4028","4029","4030","4031","4032","4033","4034","4035","4036","4037","4038","4039","4040","4041","4042","4043","4044","4045","4046","4047","4048","4049","4050","4051","4052","4053","4054","4055","4056","4057","4058","4059","4060","4061","4062","4063","4064","4065","4066","4067","4068","4069","4070","4071","4072","4073","4074","4075","4076","4077","4078","4081","4082","4083","4090","4091","4092","4094","4095","4096","4097","4098","4099","4100","4101","4102","5001","5009","5010","5012","5014","5023","5024","5033","5042","5047","5051","5052","5053","5054","5055","5056","5057","5058","5059","5060","5061","5062","5063","5064","5065","5066","5067","5068","6044","6045","6046","6048","6049","6050","6051","6053","6054","6059","6064","6082","6103","6114","6131","6133","6137","6138","6140","6142","6188","6189","6192","7005","7006","7008","7009","7010","7011","7013","7015","7016","7017","7018","7019","7020","7022","7023","7024","7025","7026","7027","7028","7029","7030","7031","7032","7033","7034","7035","7036","7038","7039","8000","8001","8002","8003","8004","8005","8006","8007","8008","8009","8010","8011","8012","8013","8015","8016","8017","8018","8020","8021","8022","8023","8024","8025","8026","8027","8028","8029","9002","9003","9004","17000","17001","17002","17003","17004","17005","17006","17007","17008","17009","17010","17011","17012","17013","17014","17015","17016","17017","18000","18001","18002","18003","80001","80002","80003","80004"]}
Info 50   [11:17:21.809] request:
    {"seq":7,"type":"request","command":"geterr","arguments":{"delay":0,"files":["/home/andy/sample/ts/src/a.ts"]}}
Perf 51   [11:17:21.809] 7::geterr: async elapsed time (in milliseconds) 0.4990
Info 52   [11:17:21.811] Starting updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json
Info 53   [11:17:21.811] Finishing updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json Version: 2 structureChanged: false Elapsed: 0ms
Info 54   [11:17:21.812] event:
    {"seq":0,"type":"event","event":"syntaxDiag","body":{"file":"/home/andy/sample/ts/src/a.ts","diagnostics":[]}}
Info 55   [11:17:21.813] Starting updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json
Info 56   [11:17:21.813] Finishing updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json Version: 2 structureChanged: false Elapsed: 0ms
Info 57   [11:17:21.822] event:
    {"seq":0,"type":"event","event":"semanticDiag","body":{"file":"/home/andy/sample/ts/src/a.ts","diagnostics":[{"start":{"line":1,"offset":15},"end":{"line":1,"offset":49},"text":"Cannot find module 'a/aaaaaaa/aaaaaaa/aaaaaa/aaaaaaa'.","code":2307,"category":"error"},{"start":{"line":2,"offset":15},"end":{"line":2,"offset":18},"text":"Cannot find module 'b'.","code":2307,"category":"error"},{"start":{"line":3,"offset":15},"end":{"line":3,"offset":18},"text":"Cannot find module 'c'.","code":2307,"category":"error"}]}}
Info 58   [11:17:21.822] Starting updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json
Info 59   [11:17:21.822] Finishing updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json Version: 2 structureChanged: false Elapsed: 0ms
Info 60   [11:17:21.823] event:
    {"seq":0,"type":"event","event":"suggestionDiag","body":{"file":"/home/andy/sample/ts/src/a.ts","diagnostics":[]}}
Info 61   [11:17:21.823] event:
    {"seq":0,"type":"event","event":"requestCompleted","body":{"request_seq":7}}
Info 62   [11:17:22.50] request:
    {"seq":8,"type":"request","command":"configure","arguments":{"file":"/home/andy/sample/ts/src/a.ts","formatOptions":{"tabSize":4,"indentSize":4,"convertTabsToSpaces":true,"newLineCharacter":"\n","insertSpaceAfterCommaDelimiter":true,"insertSpaceAfterConstructor":false,"insertSpaceAfterSemicolonInForStatements":true,"insertSpaceBeforeAndAfterBinaryOperators":true,"insertSpaceAfterKeywordsInControlFlowStatements":true,"insertSpaceAfterFunctionKeywordForAnonymousFunctions":true,"insertSpaceBeforeFunctionParenthesis":false,"insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis":false,"insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets":false,"insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces":true,"insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces":false,"insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces":false,"insertSpaceAfterTypeAssertion":false,"placeOpenBraceOnNewLineForFunctions":false,"placeOpenBraceOnNewLineForControlBlocks":false}}}
Info 63   [11:17:22.50] Host configuration update for file /home/andy/sample/ts/src/a.ts
Info 64   [11:17:22.50] response:
    {"seq":0,"type":"response","command":"configure","request_seq":8,"success":true}
Perf 65   [11:17:22.50] 8::configure: async elapsed time (in milliseconds) 0.4619
Info 66   [11:17:22.51] request:
    {"seq":9,"type":"request","command":"getCodeFixes","arguments":{"file":"/home/andy/sample/ts/src/a.ts","startLine":1,"startOffset":15,"endLine":1,"endOffset":49,"errorCodes":[2307]}}
Info 67   [11:17:22.51] Starting updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json
Info 68   [11:17:22.51] Finishing updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json Version: 2 structureChanged: false Elapsed: 0ms
Perf 69   [11:17:22.73] 9::getCodeFixes: elapsed time (in milliseconds) 22.1649
Info 70   [11:17:22.73] response:
    {"seq":0,"type":"response","command":"getCodeFixes","request_seq":9,"success":true,"body":[]}
Info 71   [11:17:22.362] request:
    {"seq":10,"type":"request","command":"getOutliningSpans","arguments":{"file":"/home/andy/sample/ts/src/a.ts"}}
Perf 72   [11:17:22.363] 10::getOutliningSpans: elapsed time (in milliseconds) 0.9270
Info 73   [11:17:22.363] response:
    {"seq":0,"type":"response","command":"getOutliningSpans","request_seq":10,"success":true,"body":[{"textSpan":{"start":{"line":5,"offset":1},"end":{"line":5,"offset":17}},"hintSpan":{"start":{"line":5,"offset":1},"end":{"line":5,"offset":17}},"bannerText":"...","autoCollapse":false},{"textSpan":{"start":{"line":6,"offset":32},"end":{"line":6,"offset":35}},"hintSpan":{"start":{"line":6,"offset":1},"end":{"line":6,"offset":35}},"bannerText":"...","autoCollapse":false}]}
Info 74   [11:17:23.258] request:
    {"seq":11,"type":"request","command":"occurrences","arguments":{"file":"/home/andy/sample/ts/src/a.ts","line":3,"offset":1}}
Info 75   [11:17:23.259] Starting updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json
Info 76   [11:17:23.259] Finishing updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json Version: 2 structureChanged: false Elapsed: 0ms
Perf 77   [11:17:23.260] 11::occurrences: elapsed time (in milliseconds) 1.6232
Info 78   [11:17:23.260] response:
    {"seq":0,"type":"response","command":"occurrences","request_seq":11,"success":true,"body":[]}
Info 79   [11:17:23.471] request:
    {"seq":12,"type":"request","command":"occurrences","arguments":{"file":"/home/andy/sample/ts/src/a.ts","line":2,"offset":1}}
Info 80   [11:17:23.472] Starting updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json
Info 81   [11:17:23.472] Finishing updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json Version: 2 structureChanged: false Elapsed: 0ms
Perf 82   [11:17:23.472] 12::occurrences: elapsed time (in milliseconds) 0.6276
Info 83   [11:17:23.472] response:
    {"seq":0,"type":"response","command":"occurrences","request_seq":12,"success":true,"body":[]}
Info 84   [11:17:23.646] request:
    {"seq":13,"type":"request","command":"occurrences","arguments":{"file":"/home/andy/sample/ts/src/a.ts","line":1,"offset":1}}
Info 85   [11:17:23.646] Starting updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json
Info 86   [11:17:23.647] Finishing updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json Version: 2 structureChanged: false Elapsed: 1ms
Perf 87   [11:17:23.647] 13::occurrences: elapsed time (in milliseconds) 0.5502
Info 88   [11:17:23.647] response:
    {"seq":0,"type":"response","command":"occurrences","request_seq":13,"success":true,"body":[]}
Info 89   [11:17:24.152] request:
    {"seq":14,"type":"request","command":"getApplicableRefactors","arguments":{"file":"/home/andy/sample/ts/src/a.ts","startLine":1,"startOffset":1,"endLine":2,"endOffset":1}}
Info 90   [11:17:24.153] Starting updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json
Info 91   [11:17:24.154] Finishing updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json Version: 2 structureChanged: false Elapsed: 0ms
Perf 92   [11:17:24.159] 14::getApplicableRefactors: elapsed time (in milliseconds) 6.3337
Info 93   [11:17:24.159] response:
    {"seq":0,"type":"response","command":"getApplicableRefactors","request_seq":14,"success":true,"body":[]}
Info 94   [11:17:24.159] request:
    {"seq":15,"type":"request","command":"getCodeFixes","arguments":{"file":"/home/andy/sample/ts/src/a.ts","startLine":1,"startOffset":15,"endLine":1,"endOffset":49,"errorCodes":[2307]}}
Info 95   [11:17:24.159] Starting updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json
Info 96   [11:17:24.160] Finishing updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json Version: 2 structureChanged: false Elapsed: 0ms
Perf 97   [11:17:24.160] 15::getCodeFixes: elapsed time (in milliseconds) 0.6133
Info 98   [11:17:24.160] response:
    {"seq":0,"type":"response","command":"getCodeFixes","request_seq":15,"success":true,"body":[]}
Info 99   [11:17:24.284] request:
    {"seq":16,"type":"request","command":"change","arguments":{"file":"/home/andy/sample/ts/src/a.ts","line":1,"offset":1,"endLine":2,"endOffset":1,"insertString":""}}
Perf 100  [11:17:24.284] 16::change: async elapsed time (in milliseconds) 0.5589
Info 101  [11:17:24.477] request:
    {"seq":17,"type":"request","command":"getOutliningSpans","arguments":{"file":"/home/andy/sample/ts/src/a.ts"}}
Err 102   [11:17:24.519] Exception on executing command {"seq":17,"type":"request","command":"getOutliningSpans","arguments":{"file":"/home/andy/sample/ts/src/a.ts"}}:

    Debug Failure. Did not expect ClassDeclaration to have an Identifier in its trivia

    Error: Debug Failure. Did not expect ClassDeclaration to have an Identifier in its trivia
    at NodeObject.addSyntheticNodes (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:83584:34)
    at processNode (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:83628:29)
    at NodeObject.createChildren (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:83642:21)
    at NodeObject.getChildren (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:83668:22)
    at Object.findChildOfKind (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:66222:26)
    at spanForNode (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:74169:36)
    at getOutliningSpanForNode (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:74155:28)
    at walk (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:74052:28)
    at visitNodes (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:13352:30)
    at Object.forEachChild (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:13559:24)
    at SourceFileObject.NodeObject.forEachChild (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:83692:23)
    at addNodeOutliningSpans (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:74045:24)
    at Object.collectElements (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:74038:13)
    at Object.getOutliningSpans (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:84735:50)
    at IOSession.Session.getOutliningSpans (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:91366:45)
    at Session.handlers.ts.createMapFromTemplate._a.(anonymous function) (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:90538:61)
    at /home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:92010:88
    at IOSession.Session.executeWithRequestId (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:92001:28)
    at IOSession.Session.executeCommand (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:92010:33)
    at IOSession.Session.onMessage (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:92030:35)
    at Interface.<anonymous> (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:93238:27)
    at emitOne (events.js:96:13)
    at Interface.emit (events.js:191:7)
    at Interface._onLine (readline.js:241:10)
    at Interface._normalWrite (readline.js:384:12)
    at Socket.ondata (readline.js:101:10)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:191:7)
    at readableAddChunk (_stream_readable.js:178:18)
    at Socket.Readable.push (_stream_readable.js:136:10)
    at Pipe.onread (net.js:560:20)
Info 103  [11:17:24.520] response:
    {"seq":0,"type":"response","command":"getOutliningSpans","request_seq":17,"success":false,"message":"Error processing request. Debug Failure. Did not expect ClassDeclaration to have an Identifier in its trivia\nError: Debug Failure. Did not expect ClassDeclaration to have an Identifier in its trivia\n    at NodeObject.addSyntheticNodes (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:83584:34)\n    at processNode (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:83628:29)\n    at NodeObject.createChildren (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:83642:21)\n    at NodeObject.getChildren (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:83668:22)\n    at Object.findChildOfKind (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:66222:26)\n    at spanForNode (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:74169:36)\n    at getOutliningSpanForNode (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:74155:28)\n    at walk (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:74052:28)\n    at visitNodes (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:13352:30)\n    at Object.forEachChild (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:13559:24)\n    at SourceFileObject.NodeObject.forEachChild (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:83692:23)\n    at addNodeOutliningSpans (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:74045:24)\n    at Object.collectElements (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:74038:13)\n    at Object.getOutliningSpans (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:84735:50)\n    at IOSession.Session.getOutliningSpans (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:91366:45)\n    at Session.handlers.ts.createMapFromTemplate._a.(anonymous function) (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:90538:61)\n    at /home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:92010:88\n    at IOSession.Session.executeWithRequestId (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:92001:28)\n    at IOSession.Session.executeCommand (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:92010:33)\n    at IOSession.Session.onMessage (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:92030:35)\n    at Interface.<anonymous> (/home/andy/.nvm/versions/node/v9.9.0/lib/node_modules/typescript/lib/tsserver.js:93238:27)\n    at emitOne (events.js:96:13)\n    at Interface.emit (events.js:191:7)\n    at Interface._onLine (readline.js:241:10)\n    at Interface._normalWrite (readline.js:384:12)\n    at Socket.ondata (readline.js:101:10)\n    at emitOne (events.js:96:13)\n    at Socket.emit (events.js:191:7)\n    at readableAddChunk (_stream_readable.js:178:18)\n    at Socket.Readable.push (_stream_readable.js:136:10)\n    at Pipe.onread (net.js:560:20)"}
Info 104  [11:17:24.584] request:
    {"seq":18,"type":"request","command":"geterr","arguments":{"delay":0,"files":["/home/andy/sample/ts/src/a.ts"]}}
Perf 105  [11:17:24.584] 18::geterr: async elapsed time (in milliseconds) 0.5245
Info 106  [11:17:24.585] Starting updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json
Info 107  [11:17:24.595] Finishing updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json Version: 3 structureChanged: true Elapsed: 10ms
Info 108  [11:17:24.596] event:
    {"seq":0,"type":"event","event":"syntaxDiag","body":{"file":"/home/andy/sample/ts/src/a.ts","diagnostics":[]}}
Info 109  [11:17:24.596] Starting updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json
Info 110  [11:17:24.597] Finishing updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json Version: 3 structureChanged: false Elapsed: 0ms
Info 111  [11:17:24.600] event:
    {"seq":0,"type":"event","event":"semanticDiag","body":{"file":"/home/andy/sample/ts/src/a.ts","diagnostics":[{"start":{"line":1,"offset":15},"end":{"line":1,"offset":18},"text":"Cannot find module 'b'.","code":2307,"category":"error"},{"start":{"line":2,"offset":15},"end":{"line":2,"offset":18},"text":"Cannot find module 'c'.","code":2307,"category":"error"}]}}
Info 112  [11:17:24.600] Starting updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json
Info 113  [11:17:24.601] Finishing updateGraphWorker: Project: /home/andy/sample/ts/tsconfig.json Version: 3 structureChanged: false Elapsed: 0ms
Info 114  [11:17:24.604] event:
    {"seq":0,"type":"event","event":"suggestionDiag","body":{"file":"/home/andy/sample/ts/src/a.ts","diagnostics":[]}}
Info 115  [11:17:24.604] event:
    {"seq":0,"type":"event","event":"requestCompleted","body":{"request_seq":18}}

@ghost ghost added Domain: TSServer Issues related to the TSServer and removed Domain: Organize Imports Issues with the organize imports feature labels Mar 28, 2018
@mhegazy mhegazy assigned ghost and unassigned amcasey Mar 28, 2018
@ghost
Copy link

ghost commented Mar 28, 2018

Note that everything works fine up until the "command":"change". The eventual error happens when we are re-scanning the ClassDeclaration node and seeing text that should not be legal trivia. This is possibly the internal identifier since the error doesn't reproduce without that.
Perhaps we are updating the source file text but not its nodes? Or the other way around?
@sheetalkamat Any ideas on what to look for?

@sheetalkamat
Copy link
Member

Looking into the log to see whats going on.

@ghost
Copy link

ghost commented Mar 28, 2018

I modified the debug message to print the file:

SourceFile {"pos":0,"end":91,"text":"import b from 'b';\nimport c from 'c';\n\n/** @internal */\nexport class LanguageIdentifier {}\n"}
  ImportDeclaration {"pos":0,"end":18,"text":"import b from 'b';"}
    ImportClause {"pos":6,"end":8,"text":"b"}
      Identifier {"pos":6,"end":8,"text":"b"}
    StringLiteral {"pos":13,"end":17,"text":"'b'"}
  ImportDeclaration {"pos":18,"end":37,"text":"import c from 'c';"}
    ImportClause {"pos":25,"end":27,"text":"c"}
      Identifier {"pos":25,"end":27,"text":"c"}
    StringLiteral {"pos":32,"end":36,"text":"'c'"}
  ClassDeclaration {"pos":37,"end":90,"text":"export class LanguageIdentifier {}"}
    ExportKeyword {"pos":37,"end":62,"text":"export"}
    Identifier {"pos":68,"end":87,"text":"LanguageIdentifier"}
  EndOfFileToken {"pos":90,"end":91,"text":""}

including trivia:

SourceFile {"pos":0,"end":91,"text":"import b from 'b';\nimport c from 'c';\n\n/** @internal */\nexport class LanguageIdentifier {}\n"}
  ImportDeclaration {"pos":0,"end":18,"text":"import b from 'b';"}
    ImportClause {"pos":6,"end":8,"text":" b"}
      Identifier {"pos":6,"end":8,"text":" b"}
    StringLiteral {"pos":13,"end":17,"text":" 'b'"}
  ImportDeclaration {"pos":18,"end":37,"text":"\nimport c from 'c';"}
    ImportClause {"pos":25,"end":27,"text":" c"}
      Identifier {"pos":25,"end":27,"text":" c"}
    StringLiteral {"pos":32,"end":36,"text":" 'c'"}
  ClassDeclaration {"pos":37,"end":90,"text":"\n\n/** @internal */\nexport class LanguageIdentifier {}"}
    ExportKeyword {"pos":37,"end":62,"text":"\n\n/** @internal */\nexport"}
    Identifier {"pos":68,"end":87,"text":" LanguageIdentifier"}
  EndOfFileToken {"pos":90,"end":91,"text":"\n"}

source code:

function printNode(sf: SourceFile): string {
    let out = "";
    recur(sf, "");
    return out;

    function recur(node: Node, indent: string): void {
        Debug.assert(node.end <= sf.end);
        const text = sf.text.slice(node.pos, node.end);
        out += `${indent}${Debug.showSyntaxKind(node)} ${JSON.stringify({ pos: node.pos, end: node.end, text })}\n`;
        node.forEachChild(child => recur(child, indent + "  "));
    }
}

@ghost
Copy link

ghost commented Mar 28, 2018

Probably the jsdoc is not getting considered so we end up rescanning it and encountering an identifier.

@sheetalkamat
Copy link
Member

The issue is that JSDoc node doesnt have updated the positions after the incremental parsing:
Before edit: And after edit the pos and end of this.JsDoc have not changed.
Before edit
this.jsDoc[0].getFullText()
"/** @internal */"
After edit
this.jsDoc[0].getFullText()
" }"

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Bug A bug in TypeScript Domain: TSServer Issues related to the TSServer Fixed A PR has been merged for this issue
Projects
None yet
Development

No branches or pull requests

4 participants