Skip to content

Commit ed3f3d1

Browse files
author
kingdaro
committed
fix for microsoft#22
1 parent e9f7443 commit ed3f3d1

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

e2e/tests/errors.js

+23-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ const { openMockFile, getFirstResponseOfType } = require('./_helpers');
44

55
const mockFileName = 'main.ts';
66

7-
87
describe('Errors', () => {
98
it('should return error for unknown property', () => {
109
const server = createServer();
@@ -115,4 +114,27 @@ describe('Errors', () => {
115114
assert.strictEqual(error.end.offset, 8);
116115
});
117116
});
117+
118+
it('should not error with interpolation at start, followed by semicolon #22', () => {
119+
const server = createServer();
120+
121+
const lines = [
122+
"function css(...args){}",
123+
"const mixin = ''",
124+
"css`",
125+
" ${mixin};",
126+
" color: blue;",
127+
"`"
128+
]
129+
130+
openMockFile(server, mockFileName, lines.join('\n'));
131+
132+
server.send({ command: 'semanticDiagnosticsSync', arguments: { file: mockFileName } });
133+
134+
return server.close().then(() => {
135+
const errorResponse = getFirstResponseOfType('semanticDiagnosticsSync', server);
136+
assert.isTrue(errorResponse.success);
137+
assert.strictEqual(errorResponse.body.length, 0);
138+
})
139+
})
118140
})

src/index.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,12 @@ export = (mod: { typescript: typeof ts }) => {
3838
const placeholder = templateString.slice(start, end);
3939
const pre = templateString.slice(0, start);
4040
const replacementChar = pre.match(/(^|\n)\s*$/g) ? ' ' : 'x';
41-
return placeholder.replace(/./gm, c => c === '\n' ? '\n' : replacementChar);
41+
42+
let result = placeholder.replace(/./gm, c => c === '\n' ? '\n' : replacementChar);
43+
if (replacementChar === ' ' && templateString.charAt(end) === ';') {
44+
result = '$a:0' + result.slice(4);
45+
}
46+
return result;
4247
},
4348
}, { logger });
4449
},

0 commit comments

Comments
 (0)