diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 92f3e68f2a..394bb0f401 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -1903,7 +1903,7 @@ module ts { function parseTypeReferenceOrTypePredicate(): TypeReferenceNode | TypePredicateNode { let typeName = parseEntityName(/*allowReservedWords*/ false, Diagnostics.Type_expected); - if (typeName.kind === SyntaxKind.Identifier && token === SyntaxKind.IsKeyword) { + if (typeName.kind === SyntaxKind.Identifier && token === SyntaxKind.IsKeyword && !scanner.hasPrecedingLineBreak()) { nextToken(); let node = createNode(SyntaxKind.TypePredicate, typeName.pos); node.parameterName = typeName; diff --git a/tests/baselines/reference/typePredicateASI.js b/tests/baselines/reference/typePredicateASI.js new file mode 100644 index 0000000000..887ce121c0 --- /dev/null +++ b/tests/baselines/reference/typePredicateASI.js @@ -0,0 +1,7 @@ +//// [typePredicateASI.ts] +interface I { + foo(callback: (a: any, b: any) => void): I + is(): boolean; +} + +//// [typePredicateASI.js] diff --git a/tests/baselines/reference/typePredicateASI.symbols b/tests/baselines/reference/typePredicateASI.symbols new file mode 100644 index 0000000000..c451c4caf0 --- /dev/null +++ b/tests/baselines/reference/typePredicateASI.symbols @@ -0,0 +1,14 @@ +=== tests/cases/conformance/expressions/typeGuards/typePredicateASI.ts === +interface I { +>I : Symbol(I, Decl(typePredicateASI.ts, 0, 0)) + + foo(callback: (a: any, b: any) => void): I +>foo : Symbol(foo, Decl(typePredicateASI.ts, 0, 13)) +>callback : Symbol(callback, Decl(typePredicateASI.ts, 1, 8)) +>a : Symbol(a, Decl(typePredicateASI.ts, 1, 19)) +>b : Symbol(b, Decl(typePredicateASI.ts, 1, 26)) +>I : Symbol(I, Decl(typePredicateASI.ts, 0, 0)) + + is(): boolean; +>is : Symbol(is, Decl(typePredicateASI.ts, 1, 46)) +} diff --git a/tests/baselines/reference/typePredicateASI.types b/tests/baselines/reference/typePredicateASI.types new file mode 100644 index 0000000000..2be5e4c755 --- /dev/null +++ b/tests/baselines/reference/typePredicateASI.types @@ -0,0 +1,14 @@ +=== tests/cases/conformance/expressions/typeGuards/typePredicateASI.ts === +interface I { +>I : I + + foo(callback: (a: any, b: any) => void): I +>foo : (callback: (a: any, b: any) => void) => I +>callback : (a: any, b: any) => void +>a : any +>b : any +>I : I + + is(): boolean; +>is : () => boolean +} diff --git a/tests/cases/conformance/expressions/typeGuards/typePredicateASI.ts b/tests/cases/conformance/expressions/typeGuards/typePredicateASI.ts new file mode 100644 index 0000000000..6017471069 --- /dev/null +++ b/tests/cases/conformance/expressions/typeGuards/typePredicateASI.ts @@ -0,0 +1,4 @@ +interface I { + foo(callback: (a: any, b: any) => void): I + is(): boolean; +} \ No newline at end of file