Skip to content

Commit

Permalink
Merge pull request #13795 from dotty-staging/fix-#13793
Browse files Browse the repository at this point in the history
Allow dual Scala 2/3 in non-experimental scopes
  • Loading branch information
smarter authored Nov 2, 2021
2 parents 9b3e6c4 + 73f3df9 commit 82172ed
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ class PruneErasedDefs extends MiniPhase with SymTransformer { thisTransform =>
tree

def checkErasedInExperimental(sym: Symbol)(using Context): Unit =
if sym.is(Erased) && sym != defn.Compiletime_erasedValue && !sym.isInExperimentalScope then
// Make an exception for Scala 2 experimental macros to allow dual Scala 2/3 macros under non experimental mode
if sym.is(Erased, butNot = Macro) && sym != defn.Compiletime_erasedValue && !sym.isInExperimentalScope then
Feature.checkExperimentalFeature("erased", sym.sourcePos)
}

Expand Down
27 changes: 27 additions & 0 deletions tests/pos-custom-args/no-experimental/i8945.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// src-2/MacroImpl.scala
trait Context {
object universe {
type Literal
}
}

class MacroImpl(val c: Context) {
import c.universe.*
def mono: Literal = ???
}

// src-3/Macros.scala
import scala.language.experimental.macros

object Macros {

object Bundles {
def mono: Unit = macro MacroImpl.mono
inline def mono: Unit = ${ Macros3.monoImpl }
}

object Macros3 {
def monoImpl(using quoted.Quotes) = '{()}
}

}

0 comments on commit 82172ed

Please sign in to comment.