Skip to content

Commit 8874130

Browse files
author
builduser
committed
Merged branch idea251.release into idea251.x
2 parents 2ce7b59 + 2400ce5 commit 8874130

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

scala/scala-impl/src/org/jetbrains/plugins/scala/lang/psi/impl/toplevel/typedef/TypeDefinitionMembers.scala

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -196,10 +196,15 @@ object TypeDefinitionMembers {
196196
if (shouldProcessMethods(processor) && !processEnum(clazz, processor.execute(_, state)))
197197
return false
198198

199-
if (place.isInScala3File)
200-
stdLibPatches(clazz).foreach {
199+
if (place.isInScala3File) {
200+
val member = processor match {
201+
case p: ResolveProcessor => p.name
202+
case _ => ""
203+
}
204+
stdLibPatches(clazz, member).foreach {
201205
processClassDeclarations(_, processor, state, lastParent, place)
202206
}
207+
}
203208

204209
true
205210
}
@@ -561,13 +566,14 @@ object TypeDefinitionMembers {
561566
private object stdLibPatches {
562567
private val map = Map(
563568
"scala.Predef" -> "scala.runtime.stdLibPatches.Predef",
564-
"scala.language" -> "scala.runtime.stdLibPatches.language"
569+
"scala.language" -> "scala.runtime.stdLibPatches.language",
570+
"scala.language.experimental" -> "scala.runtime.stdLibPatches.language.experimental"
565571
)
566572

567-
def apply(clazz: PsiClass): Option[ScObject] =
573+
def apply(clazz: PsiClass, member: String): Option[ScObject] =
568574
for {
569575
obj <- clazz.asOptionOf[ScObject]
570-
patchName <- map.get(obj.qualifiedName)
576+
patchName <- map.get(obj.qualifiedName) if !map.contains(obj.qualifiedName + "." + member)
571577
patchObj <- clazz.elementScope.getCachedObject(patchName)
572578
} yield patchObj
573579

scala/scala-impl/test/org/jetbrains/plugins/scala/annotator/Scala3HighlightingTestsMix.scala

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,17 @@ class Scala3HighlightingTestsMix extends ScalaHighlightingTestBase {
103103
Error("f(1)", "Expression of type Boolean doesn't conform to expected type Int")
104104
)
105105
}
106+
107+
def testStdLibPatches(): Unit = assertNothing(errorsFromScalaCode(
108+
s"""import scala.language.dynamics
109+
|import _root_.scala.language.dynamics
110+
|
111+
|import scala.language.experimental.macros
112+
|import _root_.scala.language.experimental.macros
113+
|
114+
|import scala.language.noAutoTupling
115+
|import _root_.scala.language.noAutoTupling
116+
|
117+
|import scala.language.experimental.namedTypeArguments
118+
|import _root_.scala.language.experimental.namedTypeArguments""".stripMargin))
106119
}

0 commit comments

Comments
 (0)