Skip to content

Commit 74a6343

Browse files
committed
Fix the usage of pattern matching for check of hasZeroOrOneAsteriskCharacter
Fixes microsoft#35171
1 parent b50b9e0 commit 74a6343

File tree

5 files changed

+86
-0
lines changed

5 files changed

+86
-0
lines changed

src/compiler/utilities.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8285,6 +8285,7 @@ namespace ts {
82858285
export function matchPatternOrExact(patternStrings: readonly string[], candidate: string): string | Pattern | undefined {
82868286
const patterns: Pattern[] = [];
82878287
for (const patternString of patternStrings) {
8288+
if (!hasZeroOrOneAsteriskCharacter(patternString)) continue;
82888289
const pattern = tryParsePattern(patternString);
82898290
if (pattern) {
82908291
patterns.push(pattern);
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
tests/cases/compiler/tsconfig.json(6,11): error TS5061: Pattern '@interface/**/*' can have at most one '*' character.
2+
tests/cases/compiler/tsconfig.json(7,11): error TS5061: Pattern '@service/**/*' can have at most one '*' character.
3+
tests/cases/compiler/tsconfig.json(7,29): error TS5062: Substitution './src/service/**/*' in pattern '@service/**/*' in can have at most one '*' character.
4+
5+
6+
==== tests/cases/compiler/tsconfig.json (3 errors) ====
7+
{
8+
"compilerOptions": {
9+
"traceResolution": true,
10+
"baseUrl": "./src",
11+
"paths": {
12+
"@interface/**/*" : ["./src/interface/*"],
13+
~~~~~~~~~~~~~~~~~
14+
!!! error TS5061: Pattern '@interface/**/*' can have at most one '*' character.
15+
"@service/**/*": ["./src/service/**/*"],
16+
~~~~~~~~~~~~~~~
17+
!!! error TS5061: Pattern '@service/**/*' can have at most one '*' character.
18+
~~~~~~~~~~~~~~~~~~~~
19+
!!! error TS5062: Substitution './src/service/**/*' in pattern '@service/**/*' in can have at most one '*' character.
20+
"@controller/*": ["controller/*"],
21+
}
22+
}
23+
}
24+
25+
==== tests/cases/compiler/src/main.ts (0 errors) ====
26+
import 'someModule';
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
//// [main.ts]
2+
import 'someModule';
3+
4+
//// [main.js]
5+
"use strict";
6+
exports.__esModule = true;
7+
require("someModule");
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
[
2+
"======== Resolving module 'someModule' from 'tests/cases/compiler/src/main.ts'. ========",
3+
"Module resolution kind is not specified, using 'NodeJs'.",
4+
"'baseUrl' option is set to 'tests/cases/compiler/src', using this value to resolve non-relative module name 'someModule'.",
5+
"'paths' option is specified, looking for a pattern to match module name 'someModule'.",
6+
"'baseUrl' option is set to 'tests/cases/compiler/src', using this value to resolve non-relative module name 'someModule'.",
7+
"Resolving module name 'someModule' relative to base url 'tests/cases/compiler/src' - 'tests/cases/compiler/src/someModule'.",
8+
"Loading module as file / folder, candidate module location 'tests/cases/compiler/src/someModule', target file type 'TypeScript'.",
9+
"File 'tests/cases/compiler/src/someModule.ts' does not exist.",
10+
"File 'tests/cases/compiler/src/someModule.tsx' does not exist.",
11+
"File 'tests/cases/compiler/src/someModule.d.ts' does not exist.",
12+
"Directory 'tests/cases/compiler/src/someModule' does not exist, skipping all lookups in it.",
13+
"Loading module 'someModule' from 'node_modules' folder, target file type 'TypeScript'.",
14+
"Directory 'tests/cases/compiler/src/node_modules' does not exist, skipping all lookups in it.",
15+
"Directory 'tests/cases/compiler/node_modules' does not exist, skipping all lookups in it.",
16+
"Directory 'tests/cases/node_modules' does not exist, skipping all lookups in it.",
17+
"Directory 'tests/node_modules' does not exist, skipping all lookups in it.",
18+
"Directory 'node_modules' does not exist, skipping all lookups in it.",
19+
"Directory '/node_modules' does not exist, skipping all lookups in it.",
20+
"'baseUrl' option is set to 'tests/cases/compiler/src', using this value to resolve non-relative module name 'someModule'.",
21+
"'paths' option is specified, looking for a pattern to match module name 'someModule'.",
22+
"'baseUrl' option is set to 'tests/cases/compiler/src', using this value to resolve non-relative module name 'someModule'.",
23+
"Resolving module name 'someModule' relative to base url 'tests/cases/compiler/src' - 'tests/cases/compiler/src/someModule'.",
24+
"Loading module as file / folder, candidate module location 'tests/cases/compiler/src/someModule', target file type 'JavaScript'.",
25+
"File 'tests/cases/compiler/src/someModule.js' does not exist.",
26+
"File 'tests/cases/compiler/src/someModule.jsx' does not exist.",
27+
"Directory 'tests/cases/compiler/src/someModule' does not exist, skipping all lookups in it.",
28+
"Loading module 'someModule' from 'node_modules' folder, target file type 'JavaScript'.",
29+
"Directory 'tests/cases/compiler/src/node_modules' does not exist, skipping all lookups in it.",
30+
"Directory 'tests/cases/compiler/node_modules' does not exist, skipping all lookups in it.",
31+
"Directory 'tests/cases/node_modules' does not exist, skipping all lookups in it.",
32+
"Directory 'tests/node_modules' does not exist, skipping all lookups in it.",
33+
"Directory 'node_modules' does not exist, skipping all lookups in it.",
34+
"Directory '/node_modules' does not exist, skipping all lookups in it.",
35+
"======== Module name 'someModule' was not resolved. ========"
36+
]
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// @noTypesAndSymbols: true
2+
// @filename: tsconfig.json
3+
{
4+
"compilerOptions": {
5+
"traceResolution": true,
6+
"baseUrl": "./src",
7+
"paths": {
8+
"@interface/**/*" : ["./src/interface/*"],
9+
"@service/**/*": ["./src/service/**/*"],
10+
"@controller/*": ["controller/*"],
11+
}
12+
}
13+
}
14+
15+
// @filename: src/main.ts
16+
import 'someModule';

0 commit comments

Comments
 (0)