diff --git a/compiler/src/dotty/tools/dotc/Driver.scala b/compiler/src/dotty/tools/dotc/Driver.scala index 580c0eae1810..6625b5ca6ea2 100644 --- a/compiler/src/dotty/tools/dotc/Driver.scala +++ b/compiler/src/dotty/tools/dotc/Driver.scala @@ -80,7 +80,6 @@ class Driver { val ictx = rootCtx.fresh val summary = command.distill(args, ictx.settings)(ictx.settingsState)(using ictx) ictx.setSettings(summary.sstate) - Feature.checkExperimentalSettings(using ictx) MacroClassLoader.init(ictx) Positioned.init(using ictx) diff --git a/compiler/src/dotty/tools/dotc/config/Feature.scala b/compiler/src/dotty/tools/dotc/config/Feature.scala index c90338302ce7..4852eaba9334 100644 --- a/compiler/src/dotty/tools/dotc/config/Feature.scala +++ b/compiler/src/dotty/tools/dotc/config/Feature.scala @@ -34,6 +34,11 @@ object Feature: val captureChecking = experimental("captureChecking") val into = experimental("into") + def experimentalAutoEnableFeatures(using Context): List[TermName] = + defn.languageExperimentalFeatures + .map(sym => experimental(sym.name)) + .filterNot(_ == captureChecking) // TODO is this correct? + /** Is `feature` enabled by by a command-line setting? The enabling setting is * * -language:feature @@ -157,18 +162,19 @@ object Feature: private def experimentalUseSite(which: String): String = s"""Experimental $which may only be used under experimental mode: | 1. in a definition marked as @experimental, or - | 2. compiling with the -experimental compiler flag, or - | 3. with a nightly or snapshot version of the compiler. + | 2. an experimental feature is imported at the package level, or + | 3. compiling with the -experimental compiler flag. |""".stripMargin - /** Check that experimental compiler options are only set for snapshot or nightly compiler versions. */ - def checkExperimentalSettings(using Context): Unit = - for setting <- ctx.settings.language.value - if setting.startsWith("experimental.") && setting != "experimental.macros" - do checkExperimentalFeature(s"feature $setting", NoSourcePosition) - def isExperimentalEnabled(using Context): Boolean = - (Properties.unstableExperimentalEnabled && !ctx.settings.YnoExperimental.value) || ctx.settings.experimental.value + ctx.settings.experimental.value || + experimentalAutoEnableFeatures.exists(enabled) + + def experimentalEnabledByLanguageSetting(using Context): Option[TermName] = + experimentalAutoEnableFeatures.find(enabledBySetting) + + def isExperimentalEnabledByImport(using Context): Boolean = + experimentalAutoEnableFeatures.exists(enabledByImport) /** Handle language import `import language..` if it is one * of the global imports `pureFunctions` or `captureChecking`. In this case diff --git a/compiler/src/dotty/tools/dotc/config/Properties.scala b/compiler/src/dotty/tools/dotc/config/Properties.scala index 3392882057e7..2a362a707ade 100644 --- a/compiler/src/dotty/tools/dotc/config/Properties.scala +++ b/compiler/src/dotty/tools/dotc/config/Properties.scala @@ -84,12 +84,6 @@ trait PropertiesTrait { */ val versionString: String = "version " + simpleVersionString - /** Whether the current version of compiler is experimental - * - * Snapshot, nightly releases and non-bootstrapped compiler are experimental. - */ - val unstableExperimentalEnabled: Boolean = versionString.contains("SNAPSHOT") || versionString.contains("NIGHTLY") || versionString.contains("nonbootstrapped") - /** Whether the current version of compiler supports research plugins. */ val researchPluginEnabled: Boolean = versionString.contains("SNAPSHOT") || versionString.contains("NIGHTLY") || versionString.contains("nonbootstrapped") diff --git a/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala b/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala index 6520546ec0f9..94b6d8023c34 100644 --- a/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala +++ b/compiler/src/dotty/tools/dotc/config/ScalaSettings.scala @@ -406,7 +406,6 @@ private sealed trait YSettings: val YretainTrees: Setting[Boolean] = BooleanSetting(ForkSetting, "Yretain-trees", "Retain trees for top-level classes, accessible from ClassSymbol#tree") val YshowTreeIds: Setting[Boolean] = BooleanSetting(ForkSetting, "Yshow-tree-ids", "Uniquely tag all tree nodes in debugging output.") val YfromTastyIgnoreList: Setting[List[String]] = MultiStringSetting(ForkSetting, "Yfrom-tasty-ignore-list", "file", "List of `tasty` files in jar files that will not be loaded when using -from-tasty.") - val YnoExperimental: Setting[Boolean] = BooleanSetting(ForkSetting, "Yno-experimental", "Disable experimental language features by default in NIGHTLY/SNAPSHOT versions of the compiler.") val YlegacyLazyVals: Setting[Boolean] = BooleanSetting(ForkSetting, "Ylegacy-lazy-vals", "Use legacy (pre 3.3.0) implementation of lazy vals.") val YcompileScala2Library: Setting[Boolean] = BooleanSetting(ForkSetting, "Ycompile-scala2-library", "Used when compiling the Scala 2 standard library.") val YoutputOnlyTasty: Setting[Boolean] = BooleanSetting(ForkSetting, "Youtput-only-tasty", "Used to only generate the TASTy file without the classfiles") diff --git a/compiler/src/dotty/tools/dotc/core/Definitions.scala b/compiler/src/dotty/tools/dotc/core/Definitions.scala index e813786068a5..675084ec230b 100644 --- a/compiler/src/dotty/tools/dotc/core/Definitions.scala +++ b/compiler/src/dotty/tools/dotc/core/Definitions.scala @@ -2008,6 +2008,13 @@ class Definitions { CapabilityAnnot, RequiresCapabilityAnnot, RetainsAnnot, RetainsCapAnnot, RetainsByNameAnnot) + /** Experimental language features defined in `scala.runtime.stdLibPatches.language.experimental`. + * + * This list does not include `scala.language.experimental.macros`. + */ + @tu lazy val languageExperimentalFeatures: List[TermSymbol] = + LanguageExperimentalModule.moduleClass.info.decls.toList.filter(_.isAllOf(Lazy | Module)).map(_.asTerm) + // ----- primitive value class machinery ------------------------------------------ class PerRun[T](generate: Context ?=> T) { diff --git a/compiler/src/dotty/tools/dotc/transform/PostTyper.scala b/compiler/src/dotty/tools/dotc/transform/PostTyper.scala index e809c0fad463..d107de31829f 100644 --- a/compiler/src/dotty/tools/dotc/transform/PostTyper.scala +++ b/compiler/src/dotty/tools/dotc/transform/PostTyper.scala @@ -417,7 +417,7 @@ class PostTyper extends MacroTransform with InfoTransformer { thisPhase => ) } case tree: ValDef => - annotateExperimental(tree.symbol) + annotateExperimentalCompanion(tree.symbol) registerIfHasMacroAnnotations(tree) checkErasedDef(tree) Checking.checkPolyFunctionType(tree.tpt) @@ -426,7 +426,6 @@ class PostTyper extends MacroTransform with InfoTransformer { thisPhase => checkStableSelection(tree.rhs) processValOrDefDef(super.transform(tree1)) case tree: DefDef => - annotateExperimental(tree.symbol) registerIfHasMacroAnnotations(tree) checkErasedDef(tree) Checking.checkPolyFunctionType(tree.tpt) @@ -438,7 +437,7 @@ class PostTyper extends MacroTransform with InfoTransformer { thisPhase => val sym = tree.symbol if (sym.isClass) VarianceChecker.check(tree) - annotateExperimental(sym) + annotateExperimentalCompanion(sym) checkMacroAnnotation(sym) if sym.isOneOf(GivenOrImplicit) then sym.keepAnnotationsCarrying(thisPhase, Set(defn.CompanionClassMetaAnnot), orNoneOf = defn.MetaAnnots) @@ -546,8 +545,8 @@ class PostTyper extends MacroTransform with InfoTransformer { thisPhase => } override def transformStats[T](trees: List[Tree], exprOwner: Symbol, wrapResult: List[Tree] => Context ?=> T)(using Context): T = - try super.transformStats(trees, exprOwner, wrapResult) - finally Checking.checkExperimentalImports(trees) + Checking.checkAndAdaptExperimentalImports(trees) + super.transformStats(trees, exprOwner, wrapResult) /** Transforms the rhs tree into a its default tree if it is in an `erased` val/def. * Performed to shrink the tree that is known to be erased later. @@ -584,14 +583,9 @@ class PostTyper extends MacroTransform with InfoTransformer { thisPhase => else if tpe.derivesFrom(defn.NullClass) then report.error("`erased` definition cannot be implemented with en expression of type Null", tree.srcPos) - private def annotateExperimental(sym: Symbol)(using Context): Unit = - def isTopLevelDefinitionInSource(sym: Symbol) = - !sym.is(Package) && !sym.name.isPackageObjectName && - (sym.owner.is(Package) || (sym.owner.isPackageObject && !sym.isConstructor)) + private def annotateExperimentalCompanion(sym: Symbol)(using Context): Unit = if sym.is(Module) then ExperimentalAnnotation.copy(sym.companionClass).foreach(sym.addAnnotation) - if !sym.hasAnnotation(defn.ExperimentalAnnot) && ctx.settings.experimental.value && isTopLevelDefinitionInSource(sym) then - sym.addAnnotation(ExperimentalAnnotation("Added by -experimental", sym.span)) // It needs to run at the phase of the postTyper --- otherwise, the test of the symbols will use // the transformed denotation with added `Serializable` and `AbstractFunction1`. diff --git a/compiler/src/dotty/tools/dotc/typer/Checking.scala b/compiler/src/dotty/tools/dotc/typer/Checking.scala index bfbcd4358853..3c74e9f4ed90 100644 --- a/compiler/src/dotty/tools/dotc/typer/Checking.scala +++ b/compiler/src/dotty/tools/dotc/typer/Checking.scala @@ -42,6 +42,7 @@ import cc.{isCaptureChecking, isRetainsLike} import collection.mutable import reporting.* +import Annotations.ExperimentalAnnotation object Checking { import tpd.* @@ -797,50 +798,57 @@ object Checking { tree /** Check that experimental language imports in `trees` - * are done only in experimental scopes, or in a top-level - * scope with only @experimental definitions. + * are done only in experimental scopes. For top-level + * experimental imports, all top-level definitions are transformed + * to @experimental definitions. + * */ - def checkExperimentalImports(trees: List[Tree])(using Context): Unit = - - def nonExperimentalStat(trees: List[Tree]): Tree = trees match - case (_: Import | EmptyTree) :: rest => - nonExperimentalStat(rest) - case (tree @ TypeDef(_, impl: Template)) :: rest if tree.symbol.isPackageObject => - nonExperimentalStat(impl.body).orElse(nonExperimentalStat(rest)) - case (tree: PackageDef) :: rest => - nonExperimentalStat(tree.stats).orElse(nonExperimentalStat(rest)) - case (tree: MemberDef) :: rest => - if tree.symbol.isExperimental || tree.symbol.is(Synthetic) then - nonExperimentalStat(rest) - else - tree - case tree :: rest => - tree - case Nil => - EmptyTree - - for case imp @ Import(qual, selectors) <- trees do + def checkAndAdaptExperimentalImports(trees: List[Tree])(using Context): Unit = + def nonExperimentalTopLevelDefs(pack: Symbol): Iterator[Symbol] = + def isNonExperimentalTopLevelDefinition(sym: Symbol) = + !sym.isExperimental + && sym.source == ctx.compilationUnit.source + && !sym.isConstructor // not constructor of package object + && !sym.is(Package) && !sym.name.isPackageObjectName + + pack.info.decls.toList.iterator.flatMap: sym => + if sym.isClass && (sym.is(Package) || sym.isPackageObject) then + nonExperimentalTopLevelDefs(sym) + else if isNonExperimentalTopLevelDefinition(sym) then + sym :: Nil + else Nil + + def unitExperimentalLanguageImports = def isAllowedImport(sel: untpd.ImportSelector) = val name = Feature.experimental(sel.name) name == Feature.scala2macros - || name == Feature.erasedDefinitions || name == Feature.captureChecking + trees.filter { + case Import(qual, selectors) => + languageImport(qual) match + case Some(nme.experimental) => + !selectors.forall(isAllowedImport) && !ctx.owner.isInExperimentalScope + case _ => false + case _ => false + } - languageImport(qual) match - case Some(nme.experimental) - if !ctx.owner.isInExperimentalScope && !selectors.forall(isAllowedImport) => - def check(stable: => String) = - Feature.checkExperimentalFeature("features", imp.srcPos, - s"\n\nNote: the scope enclosing the import is not considered experimental because it contains the\nnon-experimental $stable") - if ctx.owner.is(Package) then - // allow top-level experimental imports if all definitions are @experimental - nonExperimentalStat(trees) match - case EmptyTree => - case tree: MemberDef => check(i"${tree.symbol}") - case tree => check(i"expression ${tree}") - else Feature.checkExperimentalFeature("features", imp.srcPos) + if ctx.owner.is(Package) || ctx.owner.name.startsWith(str.REPL_SESSION_LINE) then + def markTopLevelDefsAsExperimental(why: String): Unit = + for sym <- nonExperimentalTopLevelDefs(ctx.owner) do + sym.addAnnotation(ExperimentalAnnotation(s"Added by $why", sym.span)) + + unitExperimentalLanguageImports match + case imp :: _ => markTopLevelDefsAsExperimental(i"top level $imp") case _ => - end checkExperimentalImports + Feature.experimentalEnabledByLanguageSetting match + case Some(sel) => markTopLevelDefsAsExperimental(i"-language:experimental.$sel") + case _ if ctx.settings.experimental.value => markTopLevelDefsAsExperimental(i"-experimental") + case _ => + else + for imp <- unitExperimentalLanguageImports do + Feature.checkExperimentalFeature("feature local import", imp.srcPos) + + end checkAndAdaptExperimentalImports /** Checks that PolyFunction only have valid refinements. * diff --git a/compiler/src/dotty/tools/dotc/typer/CrossVersionChecks.scala b/compiler/src/dotty/tools/dotc/typer/CrossVersionChecks.scala index 790ffb2ad343..5ce1b02733d0 100644 --- a/compiler/src/dotty/tools/dotc/typer/CrossVersionChecks.scala +++ b/compiler/src/dotty/tools/dotc/typer/CrossVersionChecks.scala @@ -132,12 +132,14 @@ class CrossVersionChecks extends MiniPhase: } override def transformOther(tree: Tree)(using Context): Tree = - tree.foreachSubTree { // Find references in type trees and imports - case tree: Ident => transformIdent(tree) - case tree: Select => transformSelect(tree) - case tree: TypeTree => transformTypeTree(tree) - case _ => - } + val inPackage = ctx.owner.is(Package) || ctx.owner.isPackageObject + if !(inPackage && tree.isInstanceOf[ImportOrExport] && Feature.isExperimentalEnabledByImport) then + tree.foreachSubTree { // Find references in type trees and imports + case tree: Ident => transformIdent(tree) + case tree: Select => transformSelect(tree) + case tree: TypeTree => transformTypeTree(tree) + case _ => + } tree end CrossVersionChecks diff --git a/compiler/test/dotty/tools/backend/jvm/PublicInBinaryTests.scala b/compiler/test/dotty/tools/backend/jvm/PublicInBinaryTests.scala index eebb2b23247a..a5463b75804e 100644 --- a/compiler/test/dotty/tools/backend/jvm/PublicInBinaryTests.scala +++ b/compiler/test/dotty/tools/backend/jvm/PublicInBinaryTests.scala @@ -42,7 +42,6 @@ class PublicInBinaryTests extends DottyBytecodeTest { override def initCtx = val ctx0 = super.initCtx ctx0.setSetting(ctx0.settings.experimental, true) - ctx0.setSetting(ctx0.settings.YnoExperimental, true) @Test def publicInBinaryDef(): Unit = { diff --git a/docs/_docs/reference/other-new-features/experimental-defs.md b/docs/_docs/reference/other-new-features/experimental-defs.md index b71b20ecc036..06cc8860281c 100644 --- a/docs/_docs/reference/other-new-features/experimental-defs.md +++ b/docs/_docs/reference/other-new-features/experimental-defs.md @@ -265,8 +265,7 @@ Experimental definitions can only be referenced in an experimental scope. Experi -6. Any code compiled using a [_Nightly_](https://search.maven.org/artifact/org.scala-lang/scala3-compiler_3) or _Snapshot_ version of the compiler is considered to be in an experimental scope. -Can use the `-Yno-experimental` compiler flag to disable it and run as a proper release. +6. An experimental language feature is imported in at the package level. All top-level definitions will be marked as `@experimental`. In any other situation, a reference to an experimental definition will cause a compilation error. diff --git a/project/Build.scala b/project/Build.scala index dcf6ec13760d..6985560c90b7 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -1083,7 +1083,6 @@ object Build { Compile / doc / scalacOptions += "-Ydocument-synthetic-types", scalacOptions += "-Ycompile-scala2-library", scalacOptions += "-Yscala2Unpickler:never", - scalacOptions += "-Yno-experimental", scalacOptions -= "-Xfatal-warnings", Compile / compile / logLevel.withRank(KeyRanks.Invisible) := Level.Error, ivyConfigurations += SourceDeps.hide, @@ -1757,6 +1756,9 @@ object Build { SourceLinksIntegrationTest / scalaSource := baseDirectory.value / "test-source-links", SourceLinksIntegrationTest / test:= ((SourceLinksIntegrationTest / test) dependsOn generateScalaDocumentation.toTask("")).value, ). + settings( + scalacOptions += "-experimental" // workaround use of experimental .info in Scaladoc2AnchorCreator + ). settings( Compile / resourceGenerators ++= Seq( generateStaticAssetsTask.taskValue, @@ -2170,9 +2172,6 @@ object Build { settings( versionScheme := Some("semver-spec"), libraryDependencies += "org.scala-lang" % "scala-library" % stdlibVersion, - // Make sure we do not refer to experimental features outside an experimental scope. - // In other words, disable NIGHTLY/SNAPSHOT experimental scope. - scalacOptions += "-Yno-experimental", ). settings(dottyLibrarySettings) if (mode == Bootstrapped) { diff --git a/scaladoc-testcases/src/tests/hugetype.scala b/scaladoc-testcases/src/tests/hugetype.scala index fe1905cb87cc..3445764e2462 100644 --- a/scaladoc-testcases/src/tests/hugetype.scala +++ b/scaladoc-testcases/src/tests/hugetype.scala @@ -31,7 +31,7 @@ trait E: @deprecated protected implicit def same[A](a: A): A -trait XD extends E: +@experimental trait XD extends E: /** * Some important information :o * diff --git a/scaladoc-testcases/src/tests/methodsAndConstructors.scala b/scaladoc-testcases/src/tests/methodsAndConstructors.scala index 132d35035b30..cddd0f56e9fe 100644 --- a/scaladoc-testcases/src/tests/methodsAndConstructors.scala +++ b/scaladoc-testcases/src/tests/methodsAndConstructors.scala @@ -1,5 +1,7 @@ package tests.methodsAndConstructors +import scala.language.experimental.clauseInterleaving + class A class B extends A class C @@ -60,8 +62,6 @@ class Methods: def withImplicitParam2(v: String)(implicit ab: Double, a: Int, b: String): String = ??? - import scala.language.experimental.clauseInterleaving - def clauseInterleaving[T](x: T)[U](y: U)(using (T, U)): (T, U) = ??? diff --git a/scaladoc/src/dotty/tools/scaladoc/snippets/SnippetCompiler.scala b/scaladoc/src/dotty/tools/scaladoc/snippets/SnippetCompiler.scala index b47b15676c57..2d8ca15d9c4f 100644 --- a/scaladoc/src/dotty/tools/scaladoc/snippets/SnippetCompiler.scala +++ b/scaladoc/src/dotty/tools/scaladoc/snippets/SnippetCompiler.scala @@ -27,7 +27,6 @@ class SnippetCompiler( object SnippetDriver extends Driver: val currentCtx = val rootCtx = initCtx.fresh.addMode(Mode.ReadPositions).addMode(Mode.Interactive) - rootCtx.setSetting(rootCtx.settings.YnoExperimental, true) rootCtx.setSetting(rootCtx.settings.experimental, true) rootCtx.setSetting(rootCtx.settings.YretainTrees, true) rootCtx.setSetting(rootCtx.settings.YcookComments, true) diff --git a/tests/init-global/pos/global-region1.scala b/tests/init-global/pos/global-region1.scala index 0797d22aa5bf..85e925967337 100644 --- a/tests/init-global/pos/global-region1.scala +++ b/tests/init-global/pos/global-region1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.init.region diff --git a/tests/init-global/warn/i18628_3.scala b/tests/init-global/warn/i18628_3.scala index e7a057ded0d8..84ab1d9f6ef3 100644 --- a/tests/init-global/warn/i18628_3.scala +++ b/tests/init-global/warn/i18628_3.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.init.widen diff --git a/tests/neg-macros/i18677-a/Macro_1.scala b/tests/neg-macros/i18677-a/Macro_1.scala index ecd90869e081..69f2a521e012 100644 --- a/tests/neg-macros/i18677-a/Macro_1.scala +++ b/tests/neg-macros/i18677-a/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import annotation.MacroAnnotation import quoted.* diff --git a/tests/neg-macros/i18677-a/Test_2.scala b/tests/neg-macros/i18677-a/Test_2.scala index 5fb6680df0ca..511cad28f4fb 100644 --- a/tests/neg-macros/i18677-a/Test_2.scala +++ b/tests/neg-macros/i18677-a/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @extendFoo class AFoo // error \ No newline at end of file diff --git a/tests/neg-macros/i18677-b/Macro_1.scala b/tests/neg-macros/i18677-b/Macro_1.scala index 9895b15942b9..02c683b00b4b 100644 --- a/tests/neg-macros/i18677-b/Macro_1.scala +++ b/tests/neg-macros/i18677-b/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import annotation.MacroAnnotation import quoted.* diff --git a/tests/neg-macros/i18677-b/Test_2.scala b/tests/neg-macros/i18677-b/Test_2.scala index 5fb6680df0ca..511cad28f4fb 100644 --- a/tests/neg-macros/i18677-b/Test_2.scala +++ b/tests/neg-macros/i18677-b/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @extendFoo class AFoo // error \ No newline at end of file diff --git a/tests/neg-macros/i19676/Macro_1.scala b/tests/neg-macros/i19676/Macro_1.scala index a5598c448a1c..44988760f535 100644 --- a/tests/neg-macros/i19676/Macro_1.scala +++ b/tests/neg-macros/i19676/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.MacroAnnotation import scala.quoted.* diff --git a/tests/neg-macros/i19676/Test_2.scala b/tests/neg-macros/i19676/Test_2.scala index 0142d263f103..b80589adaf35 100644 --- a/tests/neg-macros/i19676/Test_2.scala +++ b/tests/neg-macros/i19676/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @buggy // error case class Foo() \ No newline at end of file diff --git a/tests/neg-macros/i19842-a/Macro.scala b/tests/neg-macros/i19842-a/Macro.scala index 936e08b02592..18a1bc16045f 100644 --- a/tests/neg-macros/i19842-a/Macro.scala +++ b/tests/neg-macros/i19842-a/Macro.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, targetName} import scala.quoted.* diff --git a/tests/neg-macros/i19842-b/Macro.scala b/tests/neg-macros/i19842-b/Macro.scala index d46ff758342b..f1399d328f49 100644 --- a/tests/neg-macros/i19842-b/Macro.scala +++ b/tests/neg-macros/i19842-b/Macro.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, targetName} import scala.quoted.* diff --git a/tests/neg-macros/macro-experimental.scala b/tests/neg-macros/macro-experimental.scala index eaa822d4b541..6dc552d74102 100644 --- a/tests/neg-macros/macro-experimental.scala +++ b/tests/neg-macros/macro-experimental.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.quoted.* import scala.annotation.experimental diff --git a/tests/neg-macros/newClassExtendsNoParents/Macro_1.scala b/tests/neg-macros/newClassExtendsNoParents/Macro_1.scala index 663e5e959e87..0a64bf320b72 100644 --- a/tests/neg-macros/newClassExtendsNoParents/Macro_1.scala +++ b/tests/neg-macros/newClassExtendsNoParents/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.quoted.* diff --git a/tests/neg-macros/newClassExtendsNoParents/Test_2.scala b/tests/neg-macros/newClassExtendsNoParents/Test_2.scala index 733879441e91..da8b3d84b522 100644 --- a/tests/neg-macros/newClassExtendsNoParents/Test_2.scala +++ b/tests/neg-macros/newClassExtendsNoParents/Test_2.scala @@ -1,3 +1,3 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental def test: Any = makeClass("foo") // error diff --git a/tests/neg-macros/newClassExtendsOnlyTrait/Macro_1.scala b/tests/neg-macros/newClassExtendsOnlyTrait/Macro_1.scala index a6a4753185ba..6ced5bf34462 100644 --- a/tests/neg-macros/newClassExtendsOnlyTrait/Macro_1.scala +++ b/tests/neg-macros/newClassExtendsOnlyTrait/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.quoted.* diff --git a/tests/neg-macros/newClassExtendsOnlyTrait/Test_2.scala b/tests/neg-macros/newClassExtendsOnlyTrait/Test_2.scala index b9aaa2a87c60..7bb465eae617 100644 --- a/tests/neg-macros/newClassExtendsOnlyTrait/Test_2.scala +++ b/tests/neg-macros/newClassExtendsOnlyTrait/Test_2.scala @@ -1,3 +1,3 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental def test: Foo = makeClass("foo") // error diff --git a/tests/neg/14034.scala b/tests/neg/14034.scala index bdb09a011777..bbb633726523 100644 --- a/tests/neg/14034.scala +++ b/tests/neg/14034.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import annotation.experimental diff --git a/tests/neg/expeimental-flag-with-lang-feature-1.scala b/tests/neg/expeimental-flag-with-lang-feature-1.scala deleted file mode 100644 index a5ece729fa3d..000000000000 --- a/tests/neg/expeimental-flag-with-lang-feature-1.scala +++ /dev/null @@ -1,5 +0,0 @@ -//> using options -Yno-experimental - -import scala.language.experimental.erasedDefinitions - -erased def erasedFun(erased x: Int): Int = x // error // error diff --git a/tests/neg/expeimental-flag.scala b/tests/neg/expeimental-flag.scala index 8b2e729ea8da..dff7efa92c50 100644 --- a/tests/neg/expeimental-flag.scala +++ b/tests/neg/expeimental-flag.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimental-2.scala b/tests/neg/experimental-2.scala index f2d0262d83f5..38e814247031 100644 --- a/tests/neg/experimental-2.scala +++ b/tests/neg/experimental-2.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + class Test7 { import scala.language.experimental diff --git a/tests/neg/experimental-erased.scala b/tests/neg/experimental-erased.scala deleted file mode 100644 index 3619d0059a95..000000000000 --- a/tests/neg/experimental-erased.scala +++ /dev/null @@ -1,11 +0,0 @@ -//> using options -Yno-experimental - -import language.experimental.erasedDefinitions -import annotation.experimental - -@experimental -erased class CanThrow[-E <: Exception] - -erased class CanThrow2[-E <: Exception] // error - -def other = 1 diff --git a/tests/neg/experimental-imports.scala b/tests/neg/experimental-imports.scala index 3a672ac65a22..e3a91be45f08 100644 --- a/tests/neg/experimental-imports.scala +++ b/tests/neg/experimental-imports.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import annotation.experimental @@ -14,7 +14,7 @@ object Object2: import language.experimental.fewerBraces // error import language.experimental.namedTypeArguments // error import language.experimental.genericNumberLiterals // error - import language.experimental.erasedDefinitions + import language.experimental.erasedDefinitions // error erased def f = 1 @experimental @@ -29,7 +29,7 @@ object Class2: import language.experimental.fewerBraces // error import language.experimental.namedTypeArguments // error import language.experimental.genericNumberLiterals // error - import language.experimental.erasedDefinitions + import language.experimental.erasedDefinitions // error erased def f = 1 @experimental @@ -44,5 +44,5 @@ def fun2 = import language.experimental.fewerBraces // error import language.experimental.namedTypeArguments // error import language.experimental.genericNumberLiterals // error - import language.experimental.erasedDefinitions + import language.experimental.erasedDefinitions // error erased def f = 1 diff --git a/tests/neg/experimental-message-experimental-flag.check b/tests/neg/experimental-message-experimental-flag.check index ce3a85a89916..69174eaa789f 100644 --- a/tests/neg/experimental-message-experimental-flag.check +++ b/tests/neg/experimental-message-experimental-flag.check @@ -6,5 +6,5 @@ | | Experimental definition may only be used under experimental mode: | 1. in a definition marked as @experimental, or - | 2. compiling with the -experimental compiler flag, or - | 3. with a nightly or snapshot version of the compiler. + | 2. an experimental feature is imported at the package level, or + | 3. compiling with the -experimental compiler flag. diff --git a/tests/neg/experimental-message-experimental-flag/Lib_1.scala b/tests/neg/experimental-message-experimental-flag/Lib_1.scala index dc0d774092a2..d95aaadf2fe5 100644 --- a/tests/neg/experimental-message-experimental-flag/Lib_1.scala +++ b/tests/neg/experimental-message-experimental-flag/Lib_1.scala @@ -1,3 +1,3 @@ -//> using options -Yno-experimental -experimental +//> using options -experimental def f() = ??? diff --git a/tests/neg/experimental-message-experimental-flag/Test_2.scala b/tests/neg/experimental-message-experimental-flag/Test_2.scala index 3c6309486778..a039d32081bc 100644 --- a/tests/neg/experimental-message-experimental-flag/Test_2.scala +++ b/tests/neg/experimental-message-experimental-flag/Test_2.scala @@ -1,3 +1,3 @@ -//> using options -Yno-experimental + def g() = f() // error diff --git a/tests/neg/experimental-message.check b/tests/neg/experimental-message.check index d57fe58f27cf..ea26a6c50b51 100644 --- a/tests/neg/experimental-message.check +++ b/tests/neg/experimental-message.check @@ -5,8 +5,8 @@ | | Experimental definition may only be used under experimental mode: | 1. in a definition marked as @experimental, or - | 2. compiling with the -experimental compiler flag, or - | 3. with a nightly or snapshot version of the compiler. + | 2. an experimental feature is imported at the package level, or + | 3. compiling with the -experimental compiler flag. -- Error: tests/neg/experimental-message.scala:16:2 -------------------------------------------------------------------- 16 | f2() // error | ^^ @@ -14,8 +14,8 @@ | | Experimental definition may only be used under experimental mode: | 1. in a definition marked as @experimental, or - | 2. compiling with the -experimental compiler flag, or - | 3. with a nightly or snapshot version of the compiler. + | 2. an experimental feature is imported at the package level, or + | 3. compiling with the -experimental compiler flag. -- Error: tests/neg/experimental-message.scala:17:2 -------------------------------------------------------------------- 17 | f3() // error | ^^ @@ -23,5 +23,5 @@ | | Experimental definition may only be used under experimental mode: | 1. in a definition marked as @experimental, or - | 2. compiling with the -experimental compiler flag, or - | 3. with a nightly or snapshot version of the compiler. + | 2. an experimental feature is imported at the package level, or + | 3. compiling with the -experimental compiler flag. diff --git a/tests/neg/experimental-message.scala b/tests/neg/experimental-message.scala index 1fe9b7f0d793..8521873a6800 100644 --- a/tests/neg/experimental-message.scala +++ b/tests/neg/experimental-message.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimental-nested-imports-2.scala b/tests/neg/experimental-nested-imports-2.scala index 4aac719a81d6..f969a2a4b5a6 100644 --- a/tests/neg/experimental-nested-imports-2.scala +++ b/tests/neg/experimental-nested-imports-2.scala @@ -1,31 +1,31 @@ -//> using options -Yno-experimental + import annotation.experimental class Class1: import language.experimental.namedTypeArguments // error import language.experimental.genericNumberLiterals // error - import language.experimental.erasedDefinitions // ok: only check at erased definition + import language.experimental.erasedDefinitions // error @experimental def f = 1 def g = 1 object Object1: import language.experimental.namedTypeArguments // error import language.experimental.genericNumberLiterals // error - import language.experimental.erasedDefinitions // ok: only check at erased definition + import language.experimental.erasedDefinitions // error @experimental def f = 1 def g = 1 def fun1 = import language.experimental.namedTypeArguments // error import language.experimental.genericNumberLiterals // error - import language.experimental.erasedDefinitions // ok: only check at erased definition + import language.experimental.erasedDefinitions // error @experimental def f = 1 def g = 1 val value1 = import language.experimental.namedTypeArguments // error import language.experimental.genericNumberLiterals // error - import language.experimental.erasedDefinitions // ok: only check at erased definition + import language.experimental.erasedDefinitions // error @experimental def f = 1 def g = 1 \ No newline at end of file diff --git a/tests/neg/experimental-nested-imports-3.scala b/tests/neg/experimental-nested-imports-3.scala index 39b548b2586b..c3fbbc3676a5 100644 --- a/tests/neg/experimental-nested-imports-3.scala +++ b/tests/neg/experimental-nested-imports-3.scala @@ -1,23 +1,23 @@ -//> using options -Yno-experimental + import annotation.experimental class Class1: import language.experimental.namedTypeArguments // error import language.experimental.genericNumberLiterals // error - import language.experimental.erasedDefinitions // ok: only check at erased definition + import language.experimental.erasedDefinitions // error object Object1: import language.experimental.namedTypeArguments // error import language.experimental.genericNumberLiterals // error - import language.experimental.erasedDefinitions // ok: only check at erased definition + import language.experimental.erasedDefinitions // error def fun1 = import language.experimental.namedTypeArguments // error import language.experimental.genericNumberLiterals // error - import language.experimental.erasedDefinitions // ok: only check at erased definition + import language.experimental.erasedDefinitions // error val value1 = import language.experimental.namedTypeArguments // error import language.experimental.genericNumberLiterals // error - import language.experimental.erasedDefinitions // ok: only check at erased definition + import language.experimental.erasedDefinitions // error diff --git a/tests/neg/experimental-nested-imports.scala b/tests/neg/experimental-nested-imports.scala index 91fe3bfeb27b..b2a8f29d76eb 100644 --- a/tests/neg/experimental-nested-imports.scala +++ b/tests/neg/experimental-nested-imports.scala @@ -1,27 +1,27 @@ -//> using options -Yno-experimental + import annotation.experimental class Class1: import language.experimental.namedTypeArguments // error import language.experimental.genericNumberLiterals // error - import language.experimental.erasedDefinitions // ok: only check at erased definition + import language.experimental.erasedDefinitions // error @experimental def f = 1 object Object1: import language.experimental.namedTypeArguments // error import language.experimental.genericNumberLiterals // error - import language.experimental.erasedDefinitions // ok: only check at erased definition + import language.experimental.erasedDefinitions // error @experimental def f = 1 def fun1 = import language.experimental.namedTypeArguments // error import language.experimental.genericNumberLiterals // error - import language.experimental.erasedDefinitions // ok: only check at erased definition + import language.experimental.erasedDefinitions // error @experimental def f = 1 val value1 = import language.experimental.namedTypeArguments // error import language.experimental.genericNumberLiterals // error - import language.experimental.erasedDefinitions // ok: only check at erased definition + import language.experimental.erasedDefinitions // error @experimental def f = 1 diff --git a/tests/neg/experimental.scala b/tests/neg/experimental.scala index efca9a26ec14..f35a7ca19d7f 100644 --- a/tests/neg/experimental.scala +++ b/tests/neg/experimental.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + class Test0 { import language.experimental.namedTypeArguments // error @@ -9,7 +9,7 @@ class Test0 { } class Test1 { - import scala.language.experimental.erasedDefinitions + import scala.language.experimental.erasedDefinitions // error import scala.compiletime.erasedValue type UnivEq[A] object UnivEq: diff --git a/tests/neg/experimentalAnnot.scala b/tests/neg/experimentalAnnot.scala index e50d9165b5a4..e14b35fffc5d 100644 --- a/tests/neg/experimentalAnnot.scala +++ b/tests/neg/experimentalAnnot.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimentalCaseClass.scala b/tests/neg/experimentalCaseClass.scala index 383824954041..1d72738c6f91 100644 --- a/tests/neg/experimentalCaseClass.scala +++ b/tests/neg/experimentalCaseClass.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimentalDefaultParams.scala b/tests/neg/experimentalDefaultParams.scala index fb9ffa282e60..f2648e0eaae6 100644 --- a/tests/neg/experimentalDefaultParams.scala +++ b/tests/neg/experimentalDefaultParams.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimentalEnum.scala b/tests/neg/experimentalEnum.scala index 14ced7ca22bb..9ab7013a147e 100644 --- a/tests/neg/experimentalEnum.scala +++ b/tests/neg/experimentalEnum.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimentalErased.scala b/tests/neg/experimentalErased.scala deleted file mode 100644 index 99de8048c261..000000000000 --- a/tests/neg/experimentalErased.scala +++ /dev/null @@ -1,24 +0,0 @@ -//> using options -Yno-experimental - -import language.experimental.erasedDefinitions -import annotation.experimental - -@experimental -erased class Foo - -erased class Bar // error - -@experimental -erased def foo = 2 - -erased def bar = 2 // error - -@experimental -erased val foo2 = 2 - -erased val bar2 = 2 // error - -@experimental -def foo3(erased a: Int) = 2 - -def bar3(erased a: Int) = 2 // error diff --git a/tests/neg/experimentalInline.scala b/tests/neg/experimentalInline.scala index b837ad498492..ffe4f5271749 100644 --- a/tests/neg/experimentalInline.scala +++ b/tests/neg/experimentalInline.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimentalInline2.scala b/tests/neg/experimentalInline2.scala index 8bf6a82fba2e..575947e3216c 100644 --- a/tests/neg/experimentalInline2.scala +++ b/tests/neg/experimentalInline2.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimentalMembers.scala b/tests/neg/experimentalMembers.scala index fe4adbfcf44d..aae0e59bb9e5 100644 --- a/tests/neg/experimentalMembers.scala +++ b/tests/neg/experimentalMembers.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimentalOverloads.scala b/tests/neg/experimentalOverloads.scala index 7adaf0b78840..1bc40bbe7631 100644 --- a/tests/neg/experimentalOverloads.scala +++ b/tests/neg/experimentalOverloads.scala @@ -1,3 +1,5 @@ + + import scala.annotation.experimental trait A: diff --git a/tests/neg/experimentalOverride.scala b/tests/neg/experimentalOverride.scala index adc8b919dc6b..2372242f6577 100644 --- a/tests/neg/experimentalOverride.scala +++ b/tests/neg/experimentalOverride.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimentalRHS.scala b/tests/neg/experimentalRHS.scala index cffa35ed4ba9..a682a64ef1e0 100644 --- a/tests/neg/experimentalRHS.scala +++ b/tests/neg/experimentalRHS.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimentalSam.scala b/tests/neg/experimentalSam.scala index ab86cabc6816..e262e3202261 100644 --- a/tests/neg/experimentalSam.scala +++ b/tests/neg/experimentalSam.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimentalSignature.scala b/tests/neg/experimentalSignature.scala index 479f9140d0a0..3c8dd3d97d33 100644 --- a/tests/neg/experimentalSignature.scala +++ b/tests/neg/experimentalSignature.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimentalTerms.scala b/tests/neg/experimentalTerms.scala index 10776e78bae7..6a9aa7a7e95b 100644 --- a/tests/neg/experimentalTerms.scala +++ b/tests/neg/experimentalTerms.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimentalTests.scala b/tests/neg/experimentalTests.scala index a45809c099c4..df8dcf370c93 100644 --- a/tests/neg/experimentalTests.scala +++ b/tests/neg/experimentalTests.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimentalType.scala b/tests/neg/experimentalType.scala index 22bdecf415e3..b380d1d6a36f 100644 --- a/tests/neg/experimentalType.scala +++ b/tests/neg/experimentalType.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimentalTypeRHS.scala b/tests/neg/experimentalTypeRHS.scala index f5801ea2f11d..e995e0736902 100644 --- a/tests/neg/experimentalTypeRHS.scala +++ b/tests/neg/experimentalTypeRHS.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimentalTypes2.scala b/tests/neg/experimentalTypes2.scala index 3d042792c4de..c175eab4c389 100644 --- a/tests/neg/experimentalTypes2.scala +++ b/tests/neg/experimentalTypes2.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/experimentalUnapply.scala b/tests/neg/experimentalUnapply.scala index 049577bf63fd..89a2e2950f45 100644 --- a/tests/neg/experimentalUnapply.scala +++ b/tests/neg/experimentalUnapply.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/neg/i13091.check b/tests/neg/i13091.check new file mode 100644 index 000000000000..5cd793a9cfcb --- /dev/null +++ b/tests/neg/i13091.check @@ -0,0 +1,15 @@ +-- [E190] Potential Issue Warning: tests/neg/i13091.scala:7:17 --------------------------------------------------------- +7 |def test: Unit = new Foo // error: class Foo is marked @experimental ... + | ^^^^^^^ + | Discarded non-Unit value of type Foo. You may want to use `()`. + | + | longer explanation available when compiling with `-explain` +-- Error: tests/neg/i13091.scala:7:21 ---------------------------------------------------------------------------------- +7 |def test: Unit = new Foo // error: class Foo is marked @experimental ... + | ^^^ + | class Foo is marked @experimental + | + | Experimental definition may only be used under experimental mode: + | 1. in a definition marked as @experimental, or + | 2. an experimental feature is imported at the package level, or + | 3. compiling with the -experimental compiler flag. diff --git a/tests/neg/i13091.scala b/tests/neg/i13091.scala index 208d05d6886d..549fdf6d0fae 100644 --- a/tests/neg/i13091.scala +++ b/tests/neg/i13091.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import annotation.experimental diff --git a/tests/neg/i13848.scala b/tests/neg/i13848.scala index fcc519c47592..298985e4da9e 100644 --- a/tests/neg/i13848.scala +++ b/tests/neg/i13848.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import annotation.experimental diff --git a/tests/neg/i17292.scala b/tests/neg/i17292.scala index 9cf7fc7b1c30..e99cb5e9a75e 100644 --- a/tests/neg/i17292.scala +++ b/tests/neg/i17292.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import annotation.experimental diff --git a/tests/neg/i17292b.scala b/tests/neg/i17292b.scala index b89a64439699..08fbda18a886 100644 --- a/tests/neg/i17292b.scala +++ b/tests/neg/i17292b.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import annotation.experimental type A[T] = Int diff --git a/tests/neg/inline-unstable-accessors.scala b/tests/neg/inline-unstable-accessors.scala index d40f69819a2e..c02097f1921a 100644 --- a/tests/neg/inline-unstable-accessors.scala +++ b/tests/neg/inline-unstable-accessors.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental -Werror -WunstableInlineAccessors -explain +//> using options -experimental -Werror -WunstableInlineAccessors -explain package foo import scala.annotation.publicInBinary diff --git a/tests/neg/overrides.scala b/tests/neg/overrides.scala index ff83b91d26be..8016f5646d09 100644 --- a/tests/neg/overrides.scala +++ b/tests/neg/overrides.scala @@ -1,3 +1,5 @@ +//> using options -experimental + class Foo { type A = Int type B >: Int <: Int diff --git a/tests/neg/publicInBinaryOverride.scala b/tests/neg/publicInBinaryOverride.scala index 342e4773c56f..6529bf09736a 100644 --- a/tests/neg/publicInBinaryOverride.scala +++ b/tests/neg/publicInBinaryOverride.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.publicInBinary diff --git a/tests/neg/use-experimental-def.check b/tests/neg/use-experimental-def.check index cb8fc1402b69..a3d9d93f8a7a 100644 --- a/tests/neg/use-experimental-def.check +++ b/tests/neg/use-experimental-def.check @@ -5,5 +5,5 @@ | | Experimental definition may only be used under experimental mode: | 1. in a definition marked as @experimental, or - | 2. compiling with the -experimental compiler flag, or - | 3. with a nightly or snapshot version of the compiler. + | 2. an experimental feature is imported at the package level, or + | 3. compiling with the -experimental compiler flag. diff --git a/tests/neg/use-experimental-def.scala b/tests/neg/use-experimental-def.scala index 68ce0d6987ab..ff7b95567a60 100644 --- a/tests/neg/use-experimental-def.scala +++ b/tests/neg/use-experimental-def.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/pos-custom-args/captures/curried-closures.scala b/tests/pos-custom-args/captures/curried-closures.scala index baea8b15075c..0ad729375b3c 100644 --- a/tests/pos-custom-args/captures/curried-closures.scala +++ b/tests/pos-custom-args/captures/curried-closures.scala @@ -1,3 +1,5 @@ +//> using options -experimental + object Test: def map2(xs: List[Int])(f: Int => Int): List[Int] = xs.map(f) val f1 = map2 diff --git a/tests/pos-macros/annot-dependency-between-modules/Test_2.scala b/tests/pos-macros/annot-dependency-between-modules/Test_2.scala index f809330af52d..a3c9d1e86f06 100644 --- a/tests/pos-macros/annot-dependency-between-modules/Test_2.scala +++ b/tests/pos-macros/annot-dependency-between-modules/Test_2.scala @@ -1,3 +1,4 @@ +//> using options -experimental @void @void class Foo \ No newline at end of file diff --git a/tests/pos-macros/annot-in-object/Macro_1.scala b/tests/pos-macros/annot-in-object/Macro_1.scala index 2086f9ec4cb1..cc2727fc6cce 100644 --- a/tests/pos-macros/annot-in-object/Macro_1.scala +++ b/tests/pos-macros/annot-in-object/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/pos-macros/annot-in-object/Test_2.scala b/tests/pos-macros/annot-in-object/Test_2.scala index 146b426b0bf8..382685873adb 100644 --- a/tests/pos-macros/annot-in-object/Test_2.scala +++ b/tests/pos-macros/annot-in-object/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @Foo.void @Foo.Bar.void diff --git a/tests/pos-macros/annot-suspend/Macro_1.scala b/tests/pos-macros/annot-suspend/Macro_1.scala index 4ae96186b777..7a7cbdb10f01 100644 --- a/tests/pos-macros/annot-suspend/Macro_1.scala +++ b/tests/pos-macros/annot-suspend/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/pos-macros/annot-suspend/Test_2.scala b/tests/pos-macros/annot-suspend/Test_2.scala index 8014af03235c..4fdbcf919373 100644 --- a/tests/pos-macros/annot-suspend/Test_2.scala +++ b/tests/pos-macros/annot-suspend/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @void def test = 0 diff --git a/tests/pos-macros/annot-then-inline/Macro_1.scala b/tests/pos-macros/annot-then-inline/Macro_1.scala index f3226e24d4da..aef00d9cce58 100644 --- a/tests/pos-macros/annot-then-inline/Macro_1.scala +++ b/tests/pos-macros/annot-then-inline/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/pos-macros/annot-then-inline/Test_2.scala b/tests/pos-macros/annot-then-inline/Test_2.scala index 99cb2e4e4d5b..1798fde62676 100644 --- a/tests/pos-macros/annot-then-inline/Test_2.scala +++ b/tests/pos-macros/annot-then-inline/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @useInlinedIdentity def test = 0 diff --git a/tests/pos-macros/erasedArgs/Test_2.scala b/tests/pos-macros/erasedArgs/Test_2.scala index 19f0364d3f71..56a7fe3383fe 100644 --- a/tests/pos-macros/erasedArgs/Test_2.scala +++ b/tests/pos-macros/erasedArgs/Test_2.scala @@ -1 +1,3 @@ +//> using options -experimental + def test: "1abc" = mcr diff --git a/tests/pos-macros/i15413/Macro_1.scala b/tests/pos-macros/i15413/Macro_1.scala index 6166a5d6f55d..f451742dff9e 100644 --- a/tests/pos-macros/i15413/Macro_1.scala +++ b/tests/pos-macros/i15413/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental -Werror -WunstableInlineAccessors +//> using options -experimental -Werror -WunstableInlineAccessors import scala.quoted.* import scala.annotation.publicInBinary diff --git a/tests/pos-macros/i15413/Test_2.scala b/tests/pos-macros/i15413/Test_2.scala index 7f8c90161c66..0cdfb8fc8186 100644 --- a/tests/pos-macros/i15413/Test_2.scala +++ b/tests/pos-macros/i15413/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental def test = new Macro().foo diff --git a/tests/pos-macros/i15413b/Macro_1.scala b/tests/pos-macros/i15413b/Macro_1.scala index b8a91eaba0fe..df27b6267915 100644 --- a/tests/pos-macros/i15413b/Macro_1.scala +++ b/tests/pos-macros/i15413b/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental -Werror -WunstableInlineAccessors +//> using options -experimental -Werror -WunstableInlineAccessors package bar diff --git a/tests/pos-macros/i15413b/Test_2.scala b/tests/pos-macros/i15413b/Test_2.scala index f03559b9adb9..6c5b86487cd6 100644 --- a/tests/pos-macros/i15413b/Test_2.scala +++ b/tests/pos-macros/i15413b/Test_2.scala @@ -1,3 +1,3 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental def test = bar.foo diff --git a/tests/pos-macros/i19526b/Test.scala b/tests/pos-macros/i19526b/Test.scala index ede2db53c5b0..96274091218f 100644 --- a/tests/pos-macros/i19526b/Test.scala +++ b/tests/pos-macros/i19526b/Test.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental package crash.test diff --git a/tests/pos-macros/macro-annot-with-companion/Macro_1.scala b/tests/pos-macros/macro-annot-with-companion/Macro_1.scala index 386f5fbd09d5..29b76a47be80 100644 --- a/tests/pos-macros/macro-annot-with-companion/Macro_1.scala +++ b/tests/pos-macros/macro-annot-with-companion/Macro_1.scala @@ -1,3 +1,5 @@ +//> using options -experimental + import scala.annotation.MacroAnnotation import scala.quoted.* diff --git a/tests/pos-macros/macro-annot-with-companion/Test_2.scala b/tests/pos-macros/macro-annot-with-companion/Test_2.scala index ddf73334389b..4ae6d05fcdcf 100644 --- a/tests/pos-macros/macro-annot-with-companion/Test_2.scala +++ b/tests/pos-macros/macro-annot-with-companion/Test_2.scala @@ -1,3 +1,4 @@ +//> using options -experimental @transform class Foo diff --git a/tests/pos/TupleReverse.scala b/tests/pos/TupleReverse.scala index a5ef2ed69f0c..6d70e6759e19 100644 --- a/tests/pos/TupleReverse.scala +++ b/tests/pos/TupleReverse.scala @@ -1,3 +1,5 @@ +//> using options -experimental + import scala.Tuple.* def test[T1, T2, T3, T4] = summon[Reverse[EmptyTuple] =:= EmptyTuple] diff --git a/tests/pos/TupleReverseOnto.scala b/tests/pos/TupleReverseOnto.scala index eca8a3e3033c..4d4a40f60cec 100644 --- a/tests/pos/TupleReverseOnto.scala +++ b/tests/pos/TupleReverseOnto.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.Tuple.* diff --git a/tests/pos/cc-experimental.scala b/tests/pos/cc-experimental.scala index 4ee1f6732356..4027779a9036 100644 --- a/tests/pos/cc-experimental.scala +++ b/tests/pos/cc-experimental.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + package scala.runtime diff --git a/tests/pos/dotty-experimental.scala b/tests/pos/dotty-experimental.scala index 9cffddc0b8ba..ee9a84a1b497 100644 --- a/tests/pos/dotty-experimental.scala +++ b/tests/pos/dotty-experimental.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import language.experimental.captureChecking object test { diff --git a/tests/neg/expeimental-flag-with-lang-feature-2.scala b/tests/pos/expeimental-flag-with-lang-feature-2.scala similarity index 55% rename from tests/neg/expeimental-flag-with-lang-feature-2.scala rename to tests/pos/expeimental-flag-with-lang-feature-2.scala index 3e0b9359711a..7985f9db3a29 100644 --- a/tests/neg/expeimental-flag-with-lang-feature-2.scala +++ b/tests/pos/expeimental-flag-with-lang-feature-2.scala @@ -1,6 +1,6 @@ -//> using options -Yno-experimental -import scala.language.experimental.namedTypeArguments // error + +import scala.language.experimental.namedTypeArguments def namedTypeArgumentsFun[T, U]: Int = namedTypeArgumentsFun[T = Int, U = Int] diff --git a/tests/pos/expeimental-flag-with-lang-feature.scala b/tests/pos/expeimental-flag-with-lang-feature.scala index 9cfb716b1015..96069c332e02 100644 --- a/tests/pos/expeimental-flag-with-lang-feature.scala +++ b/tests/pos/expeimental-flag-with-lang-feature.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.language.experimental.erasedDefinitions import scala.language.experimental.namedTypeArguments diff --git a/tests/pos/expeimental-flag.scala b/tests/pos/experimental-flag.scala similarity index 85% rename from tests/pos/expeimental-flag.scala rename to tests/pos/experimental-flag.scala index 9d3daf12fddc..e5d6274c4c80 100644 --- a/tests/pos/expeimental-flag.scala +++ b/tests/pos/experimental-flag.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.experimental diff --git a/tests/pos/experimental-import-with-top-level-val-underscore.scala b/tests/pos/experimental-import-with-top-level-val-underscore.scala new file mode 100644 index 000000000000..306979634d71 --- /dev/null +++ b/tests/pos/experimental-import-with-top-level-val-underscore.scala @@ -0,0 +1,8 @@ + +import language.experimental.erasedDefinitions + +def test() = () + +val _ = + test() + 42 diff --git a/tests/pos/experimental-imports-empty.scala b/tests/pos/experimental-imports-empty.scala index 18d83839e7e7..8729905494ff 100644 --- a/tests/pos/experimental-imports-empty.scala +++ b/tests/pos/experimental-imports-empty.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import annotation.experimental import language.experimental.namedTypeArguments diff --git a/tests/pos/experimental-imports-top.scala b/tests/pos/experimental-imports-top.scala index 16f44e48eb32..9ba2b5cd2c99 100644 --- a/tests/pos/experimental-imports-top.scala +++ b/tests/pos/experimental-imports-top.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import language.experimental.erasedDefinitions import annotation.experimental diff --git a/tests/neg/experimental-package-imports.scala b/tests/pos/experimental-package-imports.scala similarity index 56% rename from tests/neg/experimental-package-imports.scala rename to tests/pos/experimental-package-imports.scala index 7a4b04606b9d..b816130c18d7 100644 --- a/tests/neg/experimental-package-imports.scala +++ b/tests/pos/experimental-package-imports.scala @@ -1,14 +1,14 @@ -//> using options -Yno-experimental + import annotation.experimental package foo { - import language.experimental.namedTypeArguments // error - import language.experimental.genericNumberLiterals // error - import language.experimental.erasedDefinitions // ok: only check at erased definition + import language.experimental.namedTypeArguments + import language.experimental.genericNumberLiterals + import language.experimental.erasedDefinitions package bar { - def foo = 1 + def foo = 1 // marked as @experimental because of the language imports } } diff --git a/tests/pos/i13091.scala b/tests/pos/i13091.scala deleted file mode 100644 index fa255cd6c08f..000000000000 --- a/tests/pos/i13091.scala +++ /dev/null @@ -1,3 +0,0 @@ -import annotation.experimental -@experimental class Foo -val foo = new Foo diff --git a/tests/pos/i13848.scala b/tests/pos/i13848.scala index 266f3edcf7ae..36fac091023a 100644 --- a/tests/pos/i13848.scala +++ b/tests/pos/i13848.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import annotation.experimental diff --git a/tests/pos/i15133a.scala b/tests/pos/i15133a.scala index 1aff3a5c1cfc..002eec13c05e 100644 --- a/tests/pos/i15133a.scala +++ b/tests/pos/i15133a.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/pos/i15133b.scala b/tests/pos/i15133b.scala index 4c235d37c698..5b1fd62981ba 100644 --- a/tests/pos/i15133b.scala +++ b/tests/pos/i15133b.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/pos/i16091.scala b/tests/pos/i16091.scala index 349e16e6d7e6..37afe19ab065 100644 --- a/tests/pos/i16091.scala +++ b/tests/pos/i16091.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + import scala.annotation.experimental diff --git a/tests/pos/i20206.scala b/tests/pos/i20206.scala index 690142140d23..07ef3dc0ba73 100644 --- a/tests/pos/i20206.scala +++ b/tests/pos/i20206.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import language.experimental.erasedDefinitions diff --git a/tests/pos/i7851.scala b/tests/pos/i7851.scala index 5a6408cbe12a..16d28ad353f9 100644 --- a/tests/pos/i7851.scala +++ b/tests/pos/i7851.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental trait Wrappable[T] { } given Wrappable[Float] with { } diff --git a/tests/pos/i8945.scala b/tests/pos/i8945.scala index 2ae8fc268cbf..d0a25b474f28 100644 --- a/tests/pos/i8945.scala +++ b/tests/pos/i8945.scala @@ -1,4 +1,4 @@ -//> using options -Yno-experimental + // src-2/MacroImpl.scala trait Context { diff --git a/tests/pos/interleaving-chainedParams.scala b/tests/pos/interleaving-chainedParams.scala index e502888d97c8..a54885d28002 100644 --- a/tests/pos/interleaving-chainedParams.scala +++ b/tests/pos/interleaving-chainedParams.scala @@ -5,7 +5,7 @@ object chainedParams{ trait Chain{ type Tail <: Chain } - + def f[C1 <: Chain](c1: C1)[C2 <: c1.Tail](c2: C2)[C3 <: c2.Tail](c3: C3): c3.Tail = ??? val self = new Chain{ type Tail = this.type } diff --git a/tests/pos/overrides.scala b/tests/pos/overrides.scala index 146dc06c76a9..c3b6235d7c1f 100644 --- a/tests/pos/overrides.scala +++ b/tests/pos/overrides.scala @@ -1,7 +1,9 @@ +//> using options -experimental + class A[T] { def f(x: T)(y: T = x) = y - + import scala.language.experimental.clauseInterleaving def b[U <: T](x: Int)[V >: T](y: String) = false diff --git a/tests/pos/phantom-Eq2/Phantom-Eq_2.scala b/tests/pos/phantom-Eq2/Phantom-Eq_2.scala index 87c6cc2275f1..f1535049a514 100644 --- a/tests/pos/phantom-Eq2/Phantom-Eq_2.scala +++ b/tests/pos/phantom-Eq2/Phantom-Eq_2.scala @@ -1,3 +1,4 @@ +//> using options -experimental /* This is a version of ../pos/phantom.scala that tests phantom clases with separate compilation */ object PhantomEq { diff --git a/tests/pos/tupled-function-instances.scala b/tests/pos/tupled-function-instances.scala index 3a3bc81b7426..b0af67aabfe4 100644 --- a/tests/pos/tupled-function-instances.scala +++ b/tests/pos/tupled-function-instances.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.util.TupledFunction object Test { diff --git a/tests/run-deep-subtype/Tuple-reverse.scala b/tests/run-deep-subtype/Tuple-reverse.scala index 230800062bb5..c611ba504d82 100644 --- a/tests/run-deep-subtype/Tuple-reverse.scala +++ b/tests/run-deep-subtype/Tuple-reverse.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.reflect.ClassTag diff --git a/tests/run-macros/Xmacro-settings-compileTimeEnv/Test.scala b/tests/run-macros/Xmacro-settings-compileTimeEnv/Test.scala index aee87a46ce81..d34cadf91765 100644 --- a/tests/run-macros/Xmacro-settings-compileTimeEnv/Test.scala +++ b/tests/run-macros/Xmacro-settings-compileTimeEnv/Test.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental -Xmacro-settings:a,b=1,c.b.a=x.y.z=1,myLogger.level=INFO +//> using options -experimental -Xmacro-settings:a,b=1,c.b.a=x.y.z=1,myLogger.level=INFO import scala.compiletime.* diff --git a/tests/run-macros/Xmacro-settings-simple/M1.scala b/tests/run-macros/Xmacro-settings-simple/M1.scala index 57a8be886ba1..487ad5baec46 100644 --- a/tests/run-macros/Xmacro-settings-simple/M1.scala +++ b/tests/run-macros/Xmacro-settings-simple/M1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental package x diff --git a/tests/run-macros/annot-add-global-class/Macro_1.scala b/tests/run-macros/annot-add-global-class/Macro_1.scala index a6ebf1c64d9d..247829954218 100644 --- a/tests/run-macros/annot-add-global-class/Macro_1.scala +++ b/tests/run-macros/annot-add-global-class/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental package mymacro diff --git a/tests/run-macros/annot-add-global-class/Test_2.scala b/tests/run-macros/annot-add-global-class/Test_2.scala index 824dd2381760..6fa058060906 100644 --- a/tests/run-macros/annot-add-global-class/Test_2.scala +++ b/tests/run-macros/annot-add-global-class/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import mymacro.addClass diff --git a/tests/run-macros/annot-add-global-object/Macro_1.scala b/tests/run-macros/annot-add-global-object/Macro_1.scala index c2fe5bbfe9e5..031d6e33fefe 100644 --- a/tests/run-macros/annot-add-global-object/Macro_1.scala +++ b/tests/run-macros/annot-add-global-object/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-add-global-object/Test_2.scala b/tests/run-macros/annot-add-global-object/Test_2.scala index 181bc4e935ea..b3c7dbff1558 100644 --- a/tests/run-macros/annot-add-global-object/Test_2.scala +++ b/tests/run-macros/annot-add-global-object/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @addClass def foo(): Unit = println("macro generated main") diff --git a/tests/run-macros/annot-add-local-class/Macro_1.scala b/tests/run-macros/annot-add-local-class/Macro_1.scala index 07f6d98e7c99..e9c8eaa9318d 100644 --- a/tests/run-macros/annot-add-local-class/Macro_1.scala +++ b/tests/run-macros/annot-add-local-class/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-add-local-class/Test_2.scala b/tests/run-macros/annot-add-local-class/Test_2.scala index 8fe4f9db5656..ece281dcb56c 100644 --- a/tests/run-macros/annot-add-local-class/Test_2.scala +++ b/tests/run-macros/annot-add-local-class/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @main def Test(): Unit = @addClass def foo(): Unit = diff --git a/tests/run-macros/annot-add-local-object/Macro_1.scala b/tests/run-macros/annot-add-local-object/Macro_1.scala index 18534730e16b..3d47fafd599a 100644 --- a/tests/run-macros/annot-add-local-object/Macro_1.scala +++ b/tests/run-macros/annot-add-local-object/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-add-local-object/Test_2.scala b/tests/run-macros/annot-add-local-object/Test_2.scala index 0ff7862fb338..2dfcc801d61a 100644 --- a/tests/run-macros/annot-add-local-object/Test_2.scala +++ b/tests/run-macros/annot-add-local-object/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @main def Test(): Unit = @addClass def foo(): Unit = diff --git a/tests/run-macros/annot-add-nested-class/Macro_1.scala b/tests/run-macros/annot-add-nested-class/Macro_1.scala index 631e3044a39c..ecdd6ae35cb0 100644 --- a/tests/run-macros/annot-add-nested-class/Macro_1.scala +++ b/tests/run-macros/annot-add-nested-class/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-add-nested-class/Test_2.scala b/tests/run-macros/annot-add-nested-class/Test_2.scala index b92225b7f107..e328f97218d3 100644 --- a/tests/run-macros/annot-add-nested-class/Test_2.scala +++ b/tests/run-macros/annot-add-nested-class/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental class Foo(): @addClass def foo(): Unit = diff --git a/tests/run-macros/annot-add-nested-object/Macro_1.scala b/tests/run-macros/annot-add-nested-object/Macro_1.scala index 0069a1010a78..ce6cbaa67a57 100644 --- a/tests/run-macros/annot-add-nested-object/Macro_1.scala +++ b/tests/run-macros/annot-add-nested-object/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-add-nested-object/Test_2.scala b/tests/run-macros/annot-add-nested-object/Test_2.scala index cf6b3a8400fe..f466cf59980b 100644 --- a/tests/run-macros/annot-add-nested-object/Test_2.scala +++ b/tests/run-macros/annot-add-nested-object/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental class Foo(): @addClass def foo(): Unit = diff --git a/tests/run-macros/annot-annot-order/Macro_1.scala b/tests/run-macros/annot-annot-order/Macro_1.scala index a177225d635f..ab48d6622d6e 100644 --- a/tests/run-macros/annot-annot-order/Macro_1.scala +++ b/tests/run-macros/annot-annot-order/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-annot-order/Test_2.scala b/tests/run-macros/annot-annot-order/Test_2.scala index 2c073bdcbb7b..9f312c47c6af 100644 --- a/tests/run-macros/annot-annot-order/Test_2.scala +++ b/tests/run-macros/annot-annot-order/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @print("foo") def foo(): Unit = () diff --git a/tests/run-macros/annot-bind/Macro_1.scala b/tests/run-macros/annot-bind/Macro_1.scala index fd0aaf1343a0..ce79560833d9 100644 --- a/tests/run-macros/annot-bind/Macro_1.scala +++ b/tests/run-macros/annot-bind/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-bind/Test_2.scala b/tests/run-macros/annot-bind/Test_2.scala index 60895adabc24..44726e69adc7 100644 --- a/tests/run-macros/annot-bind/Test_2.scala +++ b/tests/run-macros/annot-bind/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @bind("a") val foo: String = "foo" diff --git a/tests/run-macros/annot-changeVal/Macro_1.scala b/tests/run-macros/annot-changeVal/Macro_1.scala index d32cbe85ef35..35d1edf684a4 100644 --- a/tests/run-macros/annot-changeVal/Macro_1.scala +++ b/tests/run-macros/annot-changeVal/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.experimental import scala.quoted.* diff --git a/tests/run-macros/annot-changeVal/Test_2.scala b/tests/run-macros/annot-changeVal/Test_2.scala index 8e048e885651..6816712a43a0 100644 --- a/tests/run-macros/annot-changeVal/Test_2.scala +++ b/tests/run-macros/annot-changeVal/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import ChangeVal._ diff --git a/tests/run-macros/annot-concrete-class/Macro_1.scala b/tests/run-macros/annot-concrete-class/Macro_1.scala index 326b450088e6..bda268891b44 100644 --- a/tests/run-macros/annot-concrete-class/Macro_1.scala +++ b/tests/run-macros/annot-concrete-class/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.MacroAnnotation import scala.quoted.* diff --git a/tests/run-macros/annot-concrete-class/Test_2.scala b/tests/run-macros/annot-concrete-class/Test_2.scala index 7b8fc5cd0f94..6f30a68b1561 100644 --- a/tests/run-macros/annot-concrete-class/Test_2.scala +++ b/tests/run-macros/annot-concrete-class/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental trait AFoo: def foo: String diff --git a/tests/run-macros/annot-export/Macro_1.scala b/tests/run-macros/annot-export/Macro_1.scala index b135245790ba..68ecb6c5e451 100644 --- a/tests/run-macros/annot-export/Macro_1.scala +++ b/tests/run-macros/annot-export/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-export/Test_2.scala b/tests/run-macros/annot-export/Test_2.scala index 86bbee9c93fd..25954967b953 100644 --- a/tests/run-macros/annot-export/Test_2.scala +++ b/tests/run-macros/annot-export/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental object Bar: @returnClassName diff --git a/tests/run-macros/annot-gen2/Macro_1.scala b/tests/run-macros/annot-gen2/Macro_1.scala index 503d6e192cdd..edc709ca8172 100644 --- a/tests/run-macros/annot-gen2/Macro_1.scala +++ b/tests/run-macros/annot-gen2/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-gen2/Macro_2.scala b/tests/run-macros/annot-gen2/Macro_2.scala index 9cb734dfdb00..6260dbd785a7 100644 --- a/tests/run-macros/annot-gen2/Macro_2.scala +++ b/tests/run-macros/annot-gen2/Macro_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-gen2/Test_3.scala b/tests/run-macros/annot-gen2/Test_3.scala index 08abafdb2741..2b2a86aabfac 100644 --- a/tests/run-macros/annot-gen2/Test_3.scala +++ b/tests/run-macros/annot-gen2/Test_3.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental class Bar: @foo def bar(s: String) = s diff --git a/tests/run-macros/annot-generate/Macro_1.scala b/tests/run-macros/annot-generate/Macro_1.scala index b64d888aab80..e1c66b5c2127 100644 --- a/tests/run-macros/annot-generate/Macro_1.scala +++ b/tests/run-macros/annot-generate/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-generate/Macro_2.scala b/tests/run-macros/annot-generate/Macro_2.scala index 37c88459e3e1..0a2c2e34b5f7 100644 --- a/tests/run-macros/annot-generate/Macro_2.scala +++ b/tests/run-macros/annot-generate/Macro_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-generate/Test_3.scala b/tests/run-macros/annot-generate/Test_3.scala index 591b3e864f31..8c8509c81c46 100644 --- a/tests/run-macros/annot-generate/Test_3.scala +++ b/tests/run-macros/annot-generate/Test_3.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental class Bar: @foo def bar(x: Int) = x + 1 diff --git a/tests/run-macros/annot-macro-main/Macro_1.scala b/tests/run-macros/annot-macro-main/Macro_1.scala index 4470febe1244..93e312459810 100644 --- a/tests/run-macros/annot-macro-main/Macro_1.scala +++ b/tests/run-macros/annot-macro-main/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-macro-main/Test_2.scala b/tests/run-macros/annot-macro-main/Test_2.scala index a6733ec1c220..45c1b7b0ebfc 100644 --- a/tests/run-macros/annot-macro-main/Test_2.scala +++ b/tests/run-macros/annot-macro-main/Test_2.scala @@ -1,3 +1,3 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @mainMacro def Test(): Unit = println("macro generated main") diff --git a/tests/run-macros/annot-memo/Macro_1.scala b/tests/run-macros/annot-memo/Macro_1.scala index 492f1e337dfb..c0a59b57864a 100644 --- a/tests/run-macros/annot-memo/Macro_1.scala +++ b/tests/run-macros/annot-memo/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-memo/Test_2.scala b/tests/run-macros/annot-memo/Test_2.scala index da58e550adda..ad39ec43a6c3 100644 --- a/tests/run-macros/annot-memo/Test_2.scala +++ b/tests/run-macros/annot-memo/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental class Bar: @memoize diff --git a/tests/run-macros/annot-mod-class-add-def/Macro_1.scala b/tests/run-macros/annot-mod-class-add-def/Macro_1.scala index acd878f7d556..2003ebd837df 100644 --- a/tests/run-macros/annot-mod-class-add-def/Macro_1.scala +++ b/tests/run-macros/annot-mod-class-add-def/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-mod-class-add-def/Test_2.scala b/tests/run-macros/annot-mod-class-add-def/Test_2.scala index d6aae4e90cf3..61eabc28878d 100644 --- a/tests/run-macros/annot-mod-class-add-def/Test_2.scala +++ b/tests/run-macros/annot-mod-class-add-def/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @addIndirectToString("This is Foo") class Foo diff --git a/tests/run-macros/annot-mod-class-add-inner-class/Macro_1.scala b/tests/run-macros/annot-mod-class-add-inner-class/Macro_1.scala index 4294e44dd45b..40697d1027fe 100644 --- a/tests/run-macros/annot-mod-class-add-inner-class/Macro_1.scala +++ b/tests/run-macros/annot-mod-class-add-inner-class/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-mod-class-add-inner-class/Test_2.scala b/tests/run-macros/annot-mod-class-add-inner-class/Test_2.scala index b90d237b60d4..bba522b5f2c4 100644 --- a/tests/run-macros/annot-mod-class-add-inner-class/Test_2.scala +++ b/tests/run-macros/annot-mod-class-add-inner-class/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @addInnerClass class Foo diff --git a/tests/run-macros/annot-mod-class-add-lazy-val/Macro_1.scala b/tests/run-macros/annot-mod-class-add-lazy-val/Macro_1.scala index c772f6cf43a6..642f84f4cbce 100644 --- a/tests/run-macros/annot-mod-class-add-lazy-val/Macro_1.scala +++ b/tests/run-macros/annot-mod-class-add-lazy-val/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-mod-class-add-lazy-val/Test_2.scala b/tests/run-macros/annot-mod-class-add-lazy-val/Test_2.scala index 5aa0601e037e..3dcab1f0d535 100644 --- a/tests/run-macros/annot-mod-class-add-lazy-val/Test_2.scala +++ b/tests/run-macros/annot-mod-class-add-lazy-val/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @addMemoToString("This is Foo") class Foo diff --git a/tests/run-macros/annot-mod-class-add-local-class/Macro_1.scala b/tests/run-macros/annot-mod-class-add-local-class/Macro_1.scala index 50df9e86446d..116a60d4a40c 100644 --- a/tests/run-macros/annot-mod-class-add-local-class/Macro_1.scala +++ b/tests/run-macros/annot-mod-class-add-local-class/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-mod-class-add-local-class/Test_2.scala b/tests/run-macros/annot-mod-class-add-local-class/Test_2.scala index db4c975992d0..f313900635c9 100644 --- a/tests/run-macros/annot-mod-class-add-local-class/Test_2.scala +++ b/tests/run-macros/annot-mod-class-add-local-class/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @addInnerClass class Foo diff --git a/tests/run-macros/annot-mod-class-add-val/Macro_1.scala b/tests/run-macros/annot-mod-class-add-val/Macro_1.scala index cf69949dd8ad..7a9e824edc2a 100644 --- a/tests/run-macros/annot-mod-class-add-val/Macro_1.scala +++ b/tests/run-macros/annot-mod-class-add-val/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-mod-class-add-val/Test_2.scala b/tests/run-macros/annot-mod-class-add-val/Test_2.scala index f6ea732f3084..8c4af8f79ce9 100644 --- a/tests/run-macros/annot-mod-class-add-val/Test_2.scala +++ b/tests/run-macros/annot-mod-class-add-val/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @addMemoToString("This is Foo") class Foo diff --git a/tests/run-macros/annot-mod-class-add-var/Macro_1.scala b/tests/run-macros/annot-mod-class-add-var/Macro_1.scala index 0eb8592accbf..bb9ff164bfaa 100644 --- a/tests/run-macros/annot-mod-class-add-var/Macro_1.scala +++ b/tests/run-macros/annot-mod-class-add-var/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-mod-class-add-var/Test_2.scala b/tests/run-macros/annot-mod-class-add-var/Test_2.scala index c2ee86fbced5..cb8ea1db8313 100644 --- a/tests/run-macros/annot-mod-class-add-var/Test_2.scala +++ b/tests/run-macros/annot-mod-class-add-var/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @addCountToString("This is Foo: ") class Foo: diff --git a/tests/run-macros/annot-mod-class-data/Macro_1.scala b/tests/run-macros/annot-mod-class-data/Macro_1.scala index 938b4d7d4bd6..f2275546e27a 100644 --- a/tests/run-macros/annot-mod-class-data/Macro_1.scala +++ b/tests/run-macros/annot-mod-class-data/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted.* diff --git a/tests/run-macros/annot-mod-class-data/Test_2.scala b/tests/run-macros/annot-mod-class-data/Test_2.scala index 5def49c2daf8..b6007562f820 100644 --- a/tests/run-macros/annot-mod-class-data/Test_2.scala +++ b/tests/run-macros/annot-mod-class-data/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @data class Foo(val a: String, val b: Int) //> override def toString(): String = Seq(this.a, this.b).mkString("Foo(", ", ", ")") diff --git a/tests/run-macros/annot-mod-class-equals/Macro_1.scala b/tests/run-macros/annot-mod-class-equals/Macro_1.scala index 625598d3911e..c500d7a909ab 100644 --- a/tests/run-macros/annot-mod-class-equals/Macro_1.scala +++ b/tests/run-macros/annot-mod-class-equals/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted.* diff --git a/tests/run-macros/annot-mod-class-equals/Test_2.scala b/tests/run-macros/annot-mod-class-equals/Test_2.scala index 1e5287743c8b..82981f303568 100644 --- a/tests/run-macros/annot-mod-class-equals/Test_2.scala +++ b/tests/run-macros/annot-mod-class-equals/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @equals class Foo(val a: String, val b: Int) //> override def equals(that: Any): Boolean = diff --git a/tests/run-macros/annot-mod-class-mod-def/Macro_1.scala b/tests/run-macros/annot-mod-class-mod-def/Macro_1.scala index 9c28d7427f9c..657f75d3213f 100644 --- a/tests/run-macros/annot-mod-class-mod-def/Macro_1.scala +++ b/tests/run-macros/annot-mod-class-mod-def/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-mod-class-mod-def/Test_2.scala b/tests/run-macros/annot-mod-class-mod-def/Test_2.scala index b0f2b4531986..d7d03fcb661c 100644 --- a/tests/run-macros/annot-mod-class-mod-def/Test_2.scala +++ b/tests/run-macros/annot-mod-class-mod-def/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @modToString("This is Foo") class Foo: diff --git a/tests/run-macros/annot-mod-class-mod-val/Macro_1.scala b/tests/run-macros/annot-mod-class-mod-val/Macro_1.scala index 0d07a6bd2006..03b9ffce7035 100644 --- a/tests/run-macros/annot-mod-class-mod-val/Macro_1.scala +++ b/tests/run-macros/annot-mod-class-mod-val/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-mod-class-mod-val/Test_2.scala b/tests/run-macros/annot-mod-class-mod-val/Test_2.scala index 862977e2aa31..17e5cae85155 100644 --- a/tests/run-macros/annot-mod-class-mod-val/Test_2.scala +++ b/tests/run-macros/annot-mod-class-mod-val/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @setValue("valDef", "a") @setValue("varDef", "b") diff --git a/tests/run-macros/annot-mod-class-override-def/Macro_1.scala b/tests/run-macros/annot-mod-class-override-def/Macro_1.scala index 2e9b9356d845..5a013c8ed8b3 100644 --- a/tests/run-macros/annot-mod-class-override-def/Macro_1.scala +++ b/tests/run-macros/annot-mod-class-override-def/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-mod-class-override-def/Test_2.scala b/tests/run-macros/annot-mod-class-override-def/Test_2.scala index 8c6121664208..8aa04610d039 100644 --- a/tests/run-macros/annot-mod-class-override-def/Test_2.scala +++ b/tests/run-macros/annot-mod-class-override-def/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @genToString("This is Foo") class Foo diff --git a/tests/run-macros/annot-mod-class-override-val/Macro_1.scala b/tests/run-macros/annot-mod-class-override-val/Macro_1.scala index 6ec02e349051..bfbbbf690072 100644 --- a/tests/run-macros/annot-mod-class-override-val/Macro_1.scala +++ b/tests/run-macros/annot-mod-class-override-val/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-mod-class-override-val/Test_2.scala b/tests/run-macros/annot-mod-class-override-val/Test_2.scala index f067ba678af8..b633031b9f6d 100644 --- a/tests/run-macros/annot-mod-class-override-val/Test_2.scala +++ b/tests/run-macros/annot-mod-class-override-val/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental class Foo: val val1: String = "?" diff --git a/tests/run-macros/annot-mod-class-unused-new-sym/Macro_1.scala b/tests/run-macros/annot-mod-class-unused-new-sym/Macro_1.scala index 6760714aaa5e..7f0c5ee51f3a 100644 --- a/tests/run-macros/annot-mod-class-unused-new-sym/Macro_1.scala +++ b/tests/run-macros/annot-mod-class-unused-new-sym/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-mod-class-unused-new-sym/Test_2.scala b/tests/run-macros/annot-mod-class-unused-new-sym/Test_2.scala index 340b7503ff71..598f8fa1fc09 100644 --- a/tests/run-macros/annot-mod-class-unused-new-sym/Test_2.scala +++ b/tests/run-macros/annot-mod-class-unused-new-sym/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @newUnusedSymbol class Foo diff --git a/tests/run-macros/annot-result-order/Macro_1.scala b/tests/run-macros/annot-result-order/Macro_1.scala index cb9121eb8d01..1e4d21cc4fcb 100644 --- a/tests/run-macros/annot-result-order/Macro_1.scala +++ b/tests/run-macros/annot-result-order/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-result-order/Test_2.scala b/tests/run-macros/annot-result-order/Test_2.scala index 06b050d11c29..0f356a447772 100644 --- a/tests/run-macros/annot-result-order/Test_2.scala +++ b/tests/run-macros/annot-result-order/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @print("foo") def foo(): Unit = () diff --git a/tests/run-macros/annot-simple-fib/Macro_1.scala b/tests/run-macros/annot-simple-fib/Macro_1.scala index f8a74663f775..0e95ddb80ff7 100644 --- a/tests/run-macros/annot-simple-fib/Macro_1.scala +++ b/tests/run-macros/annot-simple-fib/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.{experimental, MacroAnnotation} import scala.quoted._ diff --git a/tests/run-macros/annot-simple-fib/Test_2.scala b/tests/run-macros/annot-simple-fib/Test_2.scala index 534f4569b619..ace473d848a0 100644 --- a/tests/run-macros/annot-simple-fib/Test_2.scala +++ b/tests/run-macros/annot-simple-fib/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental class Bar: @memoize diff --git a/tests/run-macros/annot-unrollLast/Macro_1.scala b/tests/run-macros/annot-unrollLast/Macro_1.scala index bcb2a94d5ac3..974eab1ea037 100644 --- a/tests/run-macros/annot-unrollLast/Macro_1.scala +++ b/tests/run-macros/annot-unrollLast/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental package example diff --git a/tests/run-macros/annot-unrollLast/Test_2.scala b/tests/run-macros/annot-unrollLast/Test_2.scala index b45b6aecd751..c05bd8a121ed 100644 --- a/tests/run-macros/annot-unrollLast/Test_2.scala +++ b/tests/run-macros/annot-unrollLast/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import example.{unrollHelper, unrollLast} diff --git a/tests/run-macros/i11685/Macro_1.scala b/tests/run-macros/i11685/Macro_1.scala index 72965266dddd..2723d5898050 100644 --- a/tests/run-macros/i11685/Macro_1.scala +++ b/tests/run-macros/i11685/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental package test diff --git a/tests/run-macros/i11685/Test_2.scala b/tests/run-macros/i11685/Test_2.scala index eaab3af7acb5..32278480a2df 100644 --- a/tests/run-macros/i11685/Test_2.scala +++ b/tests/run-macros/i11685/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import test.MyMacro diff --git a/tests/run-macros/i12021/Macro_1.scala b/tests/run-macros/i12021/Macro_1.scala index 4c36c1fc4cf0..5592da075e5b 100644 --- a/tests/run-macros/i12021/Macro_1.scala +++ b/tests/run-macros/i12021/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.quoted.* diff --git a/tests/run-macros/i16734b/Macro_1.scala b/tests/run-macros/i16734b/Macro_1.scala index e080193c398a..cbfe82425c01 100644 --- a/tests/run-macros/i16734b/Macro_1.scala +++ b/tests/run-macros/i16734b/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.quoted.* diff --git a/tests/run-macros/i16734b/Test_2.scala b/tests/run-macros/i16734b/Test_2.scala index 81316875d561..bc2a7ae4ef44 100644 --- a/tests/run-macros/i16734b/Test_2.scala +++ b/tests/run-macros/i16734b/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental type F1Inv[A] type F1Cov[+A] diff --git a/tests/run-macros/i17105/Test_3.scala b/tests/run-macros/i17105/Test_3.scala index c19ac507e1a4..a3503c5ed8f2 100644 --- a/tests/run-macros/i17105/Test_3.scala +++ b/tests/run-macros/i17105/Test_3.scala @@ -1,3 +1,5 @@ +//> using options -experimental + import reflect.Selectable.reflectiveSelectable class Hoe { def f(x: Int): String = s"Hoe got ${x}" } diff --git a/tests/run-macros/i19676/Macro_1.scala b/tests/run-macros/i19676/Macro_1.scala index 4c9007d84bbb..82a5ca718477 100644 --- a/tests/run-macros/i19676/Macro_1.scala +++ b/tests/run-macros/i19676/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.MacroAnnotation import scala.quoted.* diff --git a/tests/run-macros/i19676/Test_2.scala b/tests/run-macros/i19676/Test_2.scala index 4110d3c7f482..2baa650f138a 100644 --- a/tests/run-macros/i19676/Test_2.scala +++ b/tests/run-macros/i19676/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @companionToString("transformed by class") class InPackage diff --git a/tests/run-macros/macro-erased/Test_2.scala b/tests/run-macros/macro-erased/Test_2.scala index 1f7f8be436c7..880099021609 100644 --- a/tests/run-macros/macro-erased/Test_2.scala +++ b/tests/run-macros/macro-erased/Test_2.scala @@ -1,3 +1,5 @@ +//> using options -experimental + object Test { def main(args: Array[String]): Unit = { assert(Macro.foo1(1) == 0) diff --git a/tests/run-macros/newClass/Macro_1.scala b/tests/run-macros/newClass/Macro_1.scala index 75f757c038dc..0ad619c3d9c4 100644 --- a/tests/run-macros/newClass/Macro_1.scala +++ b/tests/run-macros/newClass/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.quoted.* diff --git a/tests/run-macros/newClass/Test_2.scala b/tests/run-macros/newClass/Test_2.scala index b126e90a5e41..8cf726d89d0b 100644 --- a/tests/run-macros/newClass/Test_2.scala +++ b/tests/run-macros/newClass/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @main def Test: Unit = { val foo = makeClass("foo") diff --git a/tests/run-macros/newClassExtends/Macro_1.scala b/tests/run-macros/newClassExtends/Macro_1.scala index d23b8fba88b6..8b817f2674b2 100644 --- a/tests/run-macros/newClassExtends/Macro_1.scala +++ b/tests/run-macros/newClassExtends/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.quoted.* diff --git a/tests/run-macros/newClassExtends/Test_2.scala b/tests/run-macros/newClassExtends/Test_2.scala index 8d782e346a68..6e902825fdc6 100644 --- a/tests/run-macros/newClassExtends/Test_2.scala +++ b/tests/run-macros/newClassExtends/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @main def Test: Unit = { val foo: Foo = makeClass("foo") diff --git a/tests/run-macros/newClassExtendsClassParams/Macro_1.scala b/tests/run-macros/newClassExtendsClassParams/Macro_1.scala index e5d28c0ceb9b..99e639e0aa4f 100644 --- a/tests/run-macros/newClassExtendsClassParams/Macro_1.scala +++ b/tests/run-macros/newClassExtendsClassParams/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.quoted.* diff --git a/tests/run-macros/newClassExtendsClassParams/Test_2.scala b/tests/run-macros/newClassExtendsClassParams/Test_2.scala index 8d782e346a68..6e902825fdc6 100644 --- a/tests/run-macros/newClassExtendsClassParams/Test_2.scala +++ b/tests/run-macros/newClassExtendsClassParams/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @main def Test: Unit = { val foo: Foo = makeClass("foo") diff --git a/tests/run-macros/newClassSelf/Macro_1.scala b/tests/run-macros/newClassSelf/Macro_1.scala index 46871d4d6b4c..8562b814677d 100644 --- a/tests/run-macros/newClassSelf/Macro_1.scala +++ b/tests/run-macros/newClassSelf/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.quoted.* diff --git a/tests/run-macros/newClassSelf/Test_2.scala b/tests/run-macros/newClassSelf/Test_2.scala index 437be3ca519d..1c1f64fd20e3 100644 --- a/tests/run-macros/newClassSelf/Test_2.scala +++ b/tests/run-macros/newClassSelf/Test_2.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental @main def Test: Unit = { val a: Bar = makeClass("A") diff --git a/tests/run-macros/term-show.check b/tests/run-macros/term-show.check index 91ba0308e3db..9733d2ad211b 100644 --- a/tests/run-macros/term-show.check +++ b/tests/run-macros/term-show.check @@ -10,7 +10,7 @@ } () } -@scala.annotation.internal.SourceFile("tests/run-macros/term-show/Test_2.scala") trait A() extends java.lang.Object { +@scala.annotation.internal.SourceFile("tests/run-macros/term-show/Test_2.scala") @scala.annotation.experimental("Added by top level import scala.language.experimental.erasedDefinitions") trait A() extends java.lang.Object { def imp(x: scala.Int)(implicit str: scala.Predef.String): scala.Int def use(`x₂`: scala.Int)(using `str₂`: scala.Predef.String): scala.Int def era(`x₃`: scala.Int)(erased `str₃`: scala.Predef.String): scala.Int diff --git a/tests/run/i13215.scala b/tests/run/i13215.scala index 56cd3517d6ac..f43e9aa1e38a 100644 --- a/tests/run/i13215.scala +++ b/tests/run/i13215.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental -Werror -WunstableInlineAccessors +//> using options -experimental -Werror -WunstableInlineAccessors import scala.annotation.publicInBinary diff --git a/tests/run/interleaving.scala b/tests/run/interleaving.scala index 557741032e8a..6749e59168bc 100644 --- a/tests/run/interleaving.scala +++ b/tests/run/interleaving.scala @@ -1,5 +1,6 @@ +import scala.language.experimental.clauseInterleaving + object Test extends App { - import scala.language.experimental.clauseInterleaving trait Key { type Value } trait DB { def getOrElse(k: Key)[V >: k.Value](default: V): V // dependent type parameter diff --git a/tests/run/noProtectedSuper.scala b/tests/run/noProtectedSuper.scala index 999a8a06c4fa..d05c13d90c9f 100644 --- a/tests/run/noProtectedSuper.scala +++ b/tests/run/noProtectedSuper.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.publicInBinary diff --git a/tests/run/publicInBinary/Lib_1.scala b/tests/run/publicInBinary/Lib_1.scala index 86895ba40706..d9936670a458 100644 --- a/tests/run/publicInBinary/Lib_1.scala +++ b/tests/run/publicInBinary/Lib_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental -Werror -WunstableInlineAccessors +//> using options -experimental -Werror -WunstableInlineAccessors package foo diff --git a/tests/run/publicInBinary/Test_2.scala b/tests/run/publicInBinary/Test_2.scala index 3c3e89419057..26829d32653a 100644 --- a/tests/run/publicInBinary/Test_2.scala +++ b/tests/run/publicInBinary/Test_2.scala @@ -1,3 +1,4 @@ +//> using options -experimental import foo.* @main def Test: Unit = diff --git a/tests/run/quotes-add-erased/Macro_1.scala b/tests/run/quotes-add-erased/Macro_1.scala index 66ec1c3642d8..66619237e346 100644 --- a/tests/run/quotes-add-erased/Macro_1.scala +++ b/tests/run/quotes-add-erased/Macro_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.annotation.MacroAnnotation import scala.annotation.internal.ErasedParam diff --git a/tests/run/quotes-reflection/Macros_1.scala b/tests/run/quotes-reflection/Macros_1.scala index c9fe6eb38c99..92ac4e53e262 100644 --- a/tests/run/quotes-reflection/Macros_1.scala +++ b/tests/run/quotes-reflection/Macros_1.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.quoted.* diff --git a/tests/run/tupled-function-andThen.scala b/tests/run/tupled-function-andThen.scala index 0068143f9d3f..5dd0a75d41d3 100644 --- a/tests/run/tupled-function-andThen.scala +++ b/tests/run/tupled-function-andThen.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.util.TupledFunction diff --git a/tests/run/tupled-function-apply.scala b/tests/run/tupled-function-apply.scala index 69cfeef91dd1..8fb68308deb5 100644 --- a/tests/run/tupled-function-apply.scala +++ b/tests/run/tupled-function-apply.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.util.TupledFunction diff --git a/tests/run/tupled-function-compose.scala b/tests/run/tupled-function-compose.scala index d984b8a9184a..84ca06103537 100644 --- a/tests/run/tupled-function-compose.scala +++ b/tests/run/tupled-function-compose.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.util.TupledFunction object Test { diff --git a/tests/run/tupled-function-extension-method.scala b/tests/run/tupled-function-extension-method.scala index fc3319aa4c15..216d91ada605 100644 --- a/tests/run/tupled-function-extension-method.scala +++ b/tests/run/tupled-function-extension-method.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.util.TupledFunction object Test { diff --git a/tests/run/tupled-function-tupled.scala b/tests/run/tupled-function-tupled.scala index 5a799be167c3..77ee8f44a0e1 100644 --- a/tests/run/tupled-function-tupled.scala +++ b/tests/run/tupled-function-tupled.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.util.TupledFunction diff --git a/tests/run/tupled-function-untupled.scala b/tests/run/tupled-function-untupled.scala index 34b81c74c4f6..3ef86b4cac2e 100644 --- a/tests/run/tupled-function-untupled.scala +++ b/tests/run/tupled-function-untupled.scala @@ -1,4 +1,4 @@ -//> using options -experimental -Yno-experimental +//> using options -experimental import scala.util.TupledFunction object Test {