Merge pull request #14132 from Microsoft/master-fix12952

[Master] Fix 12952 : throw exception when parsing conflict marker in JSX
This commit is contained in:
Yui
2017-03-20 14:32:52 -07:00
committed by GitHub
8 changed files with 56 additions and 1 deletions

View File

@@ -3863,6 +3863,9 @@ namespace ts {
parseErrorAtPosition(openingTagName.pos, openingTagName.end - openingTagName.pos, Diagnostics.JSX_element_0_has_no_corresponding_closing_tag, getTextOfNodeFromSourceText(sourceText, openingTagName));
break;
}
else if (token() === SyntaxKind.ConflictMarkerTrivia) {
break;
}
result.push(parseJsxChild());
}

View File

@@ -1716,7 +1716,14 @@ namespace ts {
while (pos < end) {
pos++;
char = text.charCodeAt(pos);
if ((char === CharacterCodes.openBrace) || (char === CharacterCodes.lessThan)) {
if (char === CharacterCodes.openBrace) {
break;
}
if (char === CharacterCodes.lessThan) {
if (isConflictMarkerTrivia(text, pos)) {
pos = scanConflictMarkerTrivia(text, pos, error);
return token = SyntaxKind.ConflictMarkerTrivia;
}
break;
}
}

View File

@@ -0,0 +1,15 @@
tests/cases/compiler/conflictMarkerTrivia3.tsx(1,11): error TS17004: Cannot use JSX unless the '--jsx' flag is provided.
tests/cases/compiler/conflictMarkerTrivia3.tsx(1,16): error TS1005: '</' expected.
tests/cases/compiler/conflictMarkerTrivia3.tsx(2,1): error TS1185: Merge conflict marker encountered.
==== tests/cases/compiler/conflictMarkerTrivia3.tsx (3 errors) ====
const x = <div>
~~~~~
!!! error TS17004: Cannot use JSX unless the '--jsx' flag is provided.
<<<<<<< HEAD
~~~~~~~~~~~~
!!! error TS1005: '</' expected.
~~~~~~~
!!! error TS1185: Merge conflict marker encountered.

View File

@@ -0,0 +1,6 @@
//// [conflictMarkerTrivia3.tsx]
const x = <div>
<<<<<<< HEAD
//// [conflictMarkerTrivia3.js]
var x = <div></>;

View File

@@ -0,0 +1,14 @@
tests/cases/compiler/conflictMarkerTrivia4.ts(1,12): error TS2304: Cannot find name 'div'.
tests/cases/compiler/conflictMarkerTrivia4.ts(2,1): error TS1185: Merge conflict marker encountered.
tests/cases/compiler/conflictMarkerTrivia4.ts(2,13): error TS1109: Expression expected.
==== tests/cases/compiler/conflictMarkerTrivia4.ts (3 errors) ====
const x = <div>
~~~
!!! error TS2304: Cannot find name 'div'.
<<<<<<< HEAD
~~~~~~~
!!! error TS1185: Merge conflict marker encountered.
!!! error TS1109: Expression expected.

View File

@@ -0,0 +1,6 @@
//// [conflictMarkerTrivia4.ts]
const x = <div>
<<<<<<< HEAD
//// [conflictMarkerTrivia4.js]
var x = ;

View File

@@ -0,0 +1,2 @@
const x = <div>
<<<<<<< HEAD

View File

@@ -0,0 +1,2 @@
const x = <div>
<<<<<<< HEAD