Skip to content

Commit 3b6e35c

Browse files
authored
Consider import.meta a qualified name/property access (#54997)
1 parent 2516583 commit 3b6e35c

23 files changed

+133
-114
lines changed

src/compiler/utilities.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,7 @@ import {
387387
mapDefined,
388388
MapLike,
389389
MemberName,
390+
MetaProperty,
390391
MethodDeclaration,
391392
MethodSignature,
392393
ModeAwareCache,
@@ -7133,7 +7134,8 @@ export function isPrototypeAccess(node: Node): node is BindableStaticAccessExpre
71337134
/** @internal */
71347135
export function isRightSideOfQualifiedNameOrPropertyAccess(node: Node) {
71357136
return (node.parent.kind === SyntaxKind.QualifiedName && (node.parent as QualifiedName).right === node) ||
7136-
(node.parent.kind === SyntaxKind.PropertyAccessExpression && (node.parent as PropertyAccessExpression).name === node);
7137+
(node.parent.kind === SyntaxKind.PropertyAccessExpression && (node.parent as PropertyAccessExpression).name === node) ||
7138+
(node.parent.kind === SyntaxKind.MetaProperty && (node.parent as MetaProperty).name === node);
71377139
}
71387140

71397141
/** @internal */

tests/baselines/reference/importMeta(module=commonjs,target=es5).types

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
>"../hamsters.jpg" : "../hamsters.jpg"
2020
>import.meta.url : string
2121
>import.meta : ImportMeta
22-
>meta : any
22+
>meta : ImportMeta
2323
>url : string
2424
>toString : () => string
2525

@@ -38,7 +38,7 @@
3838
>import.meta.scriptElement.dataset : any
3939
>import.meta.scriptElement : any
4040
>import.meta : ImportMeta
41-
>meta : any
41+
>meta : ImportMeta
4242
>scriptElement : any
4343
>dataset : any
4444
>size : any
@@ -86,7 +86,7 @@
8686
export let x = import.meta;
8787
>x : ImportMeta
8888
>import.meta : ImportMeta
89-
>meta : any
89+
>meta : ImportMeta
9090

9191
export let y = import.metal;
9292
>y : any
@@ -106,7 +106,7 @@ export let z = import.import.import.malkovich;
106106
let globalA = import.meta;
107107
>globalA : ImportMeta
108108
>import.meta : ImportMeta
109-
>meta : any
109+
>meta : ImportMeta
110110

111111
let globalB = import.metal;
112112
>globalB : any
@@ -128,20 +128,20 @@ export const foo: ImportMeta = import.meta.blah = import.meta.blue = import.meta
128128
>import.meta.blah = import.meta.blue = import.meta : ImportMeta
129129
>import.meta.blah : any
130130
>import.meta : ImportMeta
131-
>meta : any
131+
>meta : ImportMeta
132132
>blah : any
133133
>import.meta.blue = import.meta : ImportMeta
134134
>import.meta.blue : any
135135
>import.meta : ImportMeta
136-
>meta : any
136+
>meta : ImportMeta
137137
>blue : any
138138
>import.meta : ImportMeta
139-
>meta : any
139+
>meta : ImportMeta
140140

141141
import.meta = foo;
142142
>import.meta = foo : ImportMeta
143143
>import.meta : ImportMeta
144-
>meta : any
144+
>meta : ImportMeta
145145
>foo : ImportMeta
146146

147147
// @Filename augmentations.ts
@@ -163,6 +163,6 @@ const { a, b, c } = import.meta.wellKnownProperty;
163163
>c : boolean
164164
>import.meta.wellKnownProperty : { a: number; b: string; c: boolean; }
165165
>import.meta : ImportMeta
166-
>meta : any
166+
>meta : ImportMeta
167167
>wellKnownProperty : { a: number; b: string; c: boolean; }
168168

tests/baselines/reference/importMeta(module=commonjs,target=esnext).types

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
>"../hamsters.jpg" : "../hamsters.jpg"
2020
>import.meta.url : string
2121
>import.meta : ImportMeta
22-
>meta : any
22+
>meta : ImportMeta
2323
>url : string
2424
>toString : () => string
2525

@@ -38,7 +38,7 @@
3838
>import.meta.scriptElement.dataset : any
3939
>import.meta.scriptElement : any
4040
>import.meta : ImportMeta
41-
>meta : any
41+
>meta : ImportMeta
4242
>scriptElement : any
4343
>dataset : any
4444
>size : any
@@ -86,7 +86,7 @@
8686
export let x = import.meta;
8787
>x : ImportMeta
8888
>import.meta : ImportMeta
89-
>meta : any
89+
>meta : ImportMeta
9090

9191
export let y = import.metal;
9292
>y : any
@@ -106,7 +106,7 @@ export let z = import.import.import.malkovich;
106106
let globalA = import.meta;
107107
>globalA : ImportMeta
108108
>import.meta : ImportMeta
109-
>meta : any
109+
>meta : ImportMeta
110110

111111
let globalB = import.metal;
112112
>globalB : any
@@ -128,20 +128,20 @@ export const foo: ImportMeta = import.meta.blah = import.meta.blue = import.meta
128128
>import.meta.blah = import.meta.blue = import.meta : ImportMeta
129129
>import.meta.blah : any
130130
>import.meta : ImportMeta
131-
>meta : any
131+
>meta : ImportMeta
132132
>blah : any
133133
>import.meta.blue = import.meta : ImportMeta
134134
>import.meta.blue : any
135135
>import.meta : ImportMeta
136-
>meta : any
136+
>meta : ImportMeta
137137
>blue : any
138138
>import.meta : ImportMeta
139-
>meta : any
139+
>meta : ImportMeta
140140

141141
import.meta = foo;
142142
>import.meta = foo : ImportMeta
143143
>import.meta : ImportMeta
144-
>meta : any
144+
>meta : ImportMeta
145145
>foo : ImportMeta
146146

147147
// @Filename augmentations.ts
@@ -163,6 +163,6 @@ const { a, b, c } = import.meta.wellKnownProperty;
163163
>c : boolean
164164
>import.meta.wellKnownProperty : { a: number; b: string; c: boolean; }
165165
>import.meta : ImportMeta
166-
>meta : any
166+
>meta : ImportMeta
167167
>wellKnownProperty : { a: number; b: string; c: boolean; }
168168

tests/baselines/reference/importMeta(module=es2020,target=es5).types

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
>"../hamsters.jpg" : "../hamsters.jpg"
2020
>import.meta.url : string
2121
>import.meta : ImportMeta
22-
>meta : any
22+
>meta : ImportMeta
2323
>url : string
2424
>toString : () => string
2525

@@ -38,7 +38,7 @@
3838
>import.meta.scriptElement.dataset : any
3939
>import.meta.scriptElement : any
4040
>import.meta : ImportMeta
41-
>meta : any
41+
>meta : ImportMeta
4242
>scriptElement : any
4343
>dataset : any
4444
>size : any
@@ -86,7 +86,7 @@
8686
export let x = import.meta;
8787
>x : ImportMeta
8888
>import.meta : ImportMeta
89-
>meta : any
89+
>meta : ImportMeta
9090

9191
export let y = import.metal;
9292
>y : any
@@ -106,7 +106,7 @@ export let z = import.import.import.malkovich;
106106
let globalA = import.meta;
107107
>globalA : ImportMeta
108108
>import.meta : ImportMeta
109-
>meta : any
109+
>meta : ImportMeta
110110

111111
let globalB = import.metal;
112112
>globalB : any
@@ -128,20 +128,20 @@ export const foo: ImportMeta = import.meta.blah = import.meta.blue = import.meta
128128
>import.meta.blah = import.meta.blue = import.meta : ImportMeta
129129
>import.meta.blah : any
130130
>import.meta : ImportMeta
131-
>meta : any
131+
>meta : ImportMeta
132132
>blah : any
133133
>import.meta.blue = import.meta : ImportMeta
134134
>import.meta.blue : any
135135
>import.meta : ImportMeta
136-
>meta : any
136+
>meta : ImportMeta
137137
>blue : any
138138
>import.meta : ImportMeta
139-
>meta : any
139+
>meta : ImportMeta
140140

141141
import.meta = foo;
142142
>import.meta = foo : ImportMeta
143143
>import.meta : ImportMeta
144-
>meta : any
144+
>meta : ImportMeta
145145
>foo : ImportMeta
146146

147147
// @Filename augmentations.ts
@@ -163,6 +163,6 @@ const { a, b, c } = import.meta.wellKnownProperty;
163163
>c : boolean
164164
>import.meta.wellKnownProperty : { a: number; b: string; c: boolean; }
165165
>import.meta : ImportMeta
166-
>meta : any
166+
>meta : ImportMeta
167167
>wellKnownProperty : { a: number; b: string; c: boolean; }
168168

tests/baselines/reference/importMeta(module=es2020,target=esnext).types

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
>"../hamsters.jpg" : "../hamsters.jpg"
2020
>import.meta.url : string
2121
>import.meta : ImportMeta
22-
>meta : any
22+
>meta : ImportMeta
2323
>url : string
2424
>toString : () => string
2525

@@ -38,7 +38,7 @@
3838
>import.meta.scriptElement.dataset : any
3939
>import.meta.scriptElement : any
4040
>import.meta : ImportMeta
41-
>meta : any
41+
>meta : ImportMeta
4242
>scriptElement : any
4343
>dataset : any
4444
>size : any
@@ -86,7 +86,7 @@
8686
export let x = import.meta;
8787
>x : ImportMeta
8888
>import.meta : ImportMeta
89-
>meta : any
89+
>meta : ImportMeta
9090

9191
export let y = import.metal;
9292
>y : any
@@ -106,7 +106,7 @@ export let z = import.import.import.malkovich;
106106
let globalA = import.meta;
107107
>globalA : ImportMeta
108108
>import.meta : ImportMeta
109-
>meta : any
109+
>meta : ImportMeta
110110

111111
let globalB = import.metal;
112112
>globalB : any
@@ -128,20 +128,20 @@ export const foo: ImportMeta = import.meta.blah = import.meta.blue = import.meta
128128
>import.meta.blah = import.meta.blue = import.meta : ImportMeta
129129
>import.meta.blah : any
130130
>import.meta : ImportMeta
131-
>meta : any
131+
>meta : ImportMeta
132132
>blah : any
133133
>import.meta.blue = import.meta : ImportMeta
134134
>import.meta.blue : any
135135
>import.meta : ImportMeta
136-
>meta : any
136+
>meta : ImportMeta
137137
>blue : any
138138
>import.meta : ImportMeta
139-
>meta : any
139+
>meta : ImportMeta
140140

141141
import.meta = foo;
142142
>import.meta = foo : ImportMeta
143143
>import.meta : ImportMeta
144-
>meta : any
144+
>meta : ImportMeta
145145
>foo : ImportMeta
146146

147147
// @Filename augmentations.ts
@@ -163,6 +163,6 @@ const { a, b, c } = import.meta.wellKnownProperty;
163163
>c : boolean
164164
>import.meta.wellKnownProperty : { a: number; b: string; c: boolean; }
165165
>import.meta : ImportMeta
166-
>meta : any
166+
>meta : ImportMeta
167167
>wellKnownProperty : { a: number; b: string; c: boolean; }
168168

tests/baselines/reference/importMeta(module=esnext,target=es5).types

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
>"../hamsters.jpg" : "../hamsters.jpg"
2020
>import.meta.url : string
2121
>import.meta : ImportMeta
22-
>meta : any
22+
>meta : ImportMeta
2323
>url : string
2424
>toString : () => string
2525

@@ -38,7 +38,7 @@
3838
>import.meta.scriptElement.dataset : any
3939
>import.meta.scriptElement : any
4040
>import.meta : ImportMeta
41-
>meta : any
41+
>meta : ImportMeta
4242
>scriptElement : any
4343
>dataset : any
4444
>size : any
@@ -86,7 +86,7 @@
8686
export let x = import.meta;
8787
>x : ImportMeta
8888
>import.meta : ImportMeta
89-
>meta : any
89+
>meta : ImportMeta
9090

9191
export let y = import.metal;
9292
>y : any
@@ -106,7 +106,7 @@ export let z = import.import.import.malkovich;
106106
let globalA = import.meta;
107107
>globalA : ImportMeta
108108
>import.meta : ImportMeta
109-
>meta : any
109+
>meta : ImportMeta
110110

111111
let globalB = import.metal;
112112
>globalB : any
@@ -128,20 +128,20 @@ export const foo: ImportMeta = import.meta.blah = import.meta.blue = import.meta
128128
>import.meta.blah = import.meta.blue = import.meta : ImportMeta
129129
>import.meta.blah : any
130130
>import.meta : ImportMeta
131-
>meta : any
131+
>meta : ImportMeta
132132
>blah : any
133133
>import.meta.blue = import.meta : ImportMeta
134134
>import.meta.blue : any
135135
>import.meta : ImportMeta
136-
>meta : any
136+
>meta : ImportMeta
137137
>blue : any
138138
>import.meta : ImportMeta
139-
>meta : any
139+
>meta : ImportMeta
140140

141141
import.meta = foo;
142142
>import.meta = foo : ImportMeta
143143
>import.meta : ImportMeta
144-
>meta : any
144+
>meta : ImportMeta
145145
>foo : ImportMeta
146146

147147
// @Filename augmentations.ts
@@ -163,6 +163,6 @@ const { a, b, c } = import.meta.wellKnownProperty;
163163
>c : boolean
164164
>import.meta.wellKnownProperty : { a: number; b: string; c: boolean; }
165165
>import.meta : ImportMeta
166-
>meta : any
166+
>meta : ImportMeta
167167
>wellKnownProperty : { a: number; b: string; c: boolean; }
168168

0 commit comments

Comments
 (0)