diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index df9ee17f32d9f..57cd2f3c3091c 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -3509,7 +3509,7 @@ namespace ts { ? WatchDirectoryFlags.Recursive : WatchDirectoryFlags.None }; } - if (isImplicitGlob(spec)) { + if (isImplicitGlob(spec.substring(spec.lastIndexOf(directorySeparator) + 1))) { return { key: useCaseSensitiveFileNames ? spec : toFileNameLowerCase(spec), flags: WatchDirectoryFlags.Recursive diff --git a/src/testRunner/unittests/config/tsconfigParsing.ts b/src/testRunner/unittests/config/tsconfigParsing.ts index 3c6dfb6a53636..de793bffa4e05 100644 --- a/src/testRunner/unittests/config/tsconfigParsing.ts +++ b/src/testRunner/unittests/config/tsconfigParsing.ts @@ -412,5 +412,14 @@ namespace ts { Diagnostics.Compiler_option_0_requires_a_value_of_type_1.code, /*noLocation*/ true); }); + + it("parses wildcard directories even when parent directories have dots", () => { + const parsed = parseConfigFileTextToJson("/foo.bar/tsconfig.json", JSON.stringify({ + include: ["src"] + })); + + const parsedCommand = parseJsonConfigFileContent(parsed.config, sys, "/foo.bar"); + assert.deepEqual(parsedCommand.wildcardDirectories, { "/foo.bar/src": WatchDirectoryFlags.Recursive }); + }); }); }