Skip to content

Commit 5421c4c

Browse files
Check if a prefix is valid before selecting from a type
Co-Authored-By: Katarzyna Marek <[email protected]>
1 parent 8c5b00d commit 5421c4c

File tree

5 files changed

+13
-1
lines changed

5 files changed

+13
-1
lines changed

compiler/src/dotty/tools/dotc/typer/TypeAssigner.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ trait TypeAssigner {
163163
else
164164
qualType.findMember(name, pre)
165165

166-
if reallyExists(mbr) then qualType.select(name, mbr)
166+
if reallyExists(mbr) && NamedType.validPrefix(qualType) then qualType.select(name, mbr)
167167
else if qualType.isErroneous || name.toTermName == nme.ERROR then UnspecifiedErrorType
168168
else NoType
169169
end selectionType

tests/neg/i22357.check

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
-- Error: tests/neg/i22357.scala:1:0 -----------------------------------------------------------------------------------
2+
1 |@([A] =>> Int) // error
3+
|^^^^^^^^^^^^^^
4+
|[A] =>> Int does not have a constructor

tests/neg/i22357.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@([A] =>> Int) // error
2+
def i = 1

tests/neg/i22357a.check

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
-- Error: tests/neg/i22357a.scala:2:6 ----------------------------------------------------------------------------------
2+
2 | new ([A] =>> Int)(2) // error
3+
| ^^^^^^^^^^^^^
4+
| [A] =>> Int does not have a constructor

tests/neg/i22357a.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
def main =
2+
new ([A] =>> Int)(2) // error

0 commit comments

Comments
 (0)