Skip to content

Commit 50261a3

Browse files
committed
Ship SIP 68: Referenceable package objects
1 parent fe49539 commit 50261a3

File tree

5 files changed

+14
-14
lines changed

5 files changed

+14
-14
lines changed

compiler/src/dotty/tools/dotc/config/Feature.scala

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ object Feature:
3737
val into = experimental("into")
3838
val modularity = experimental("modularity")
3939
val quotedPatternsWithPolymorphicFunctions = experimental("quotedPatternsWithPolymorphicFunctions")
40-
val packageObjectValues = experimental("packageObjectValues")
4140
val multiSpreads = experimental("multiSpreads")
4241
val subCases = experimental("subCases")
4342
val relaxedLambdaSyntax = experimental("relaxedLambdaSyntax")
@@ -69,7 +68,6 @@ object Feature:
6968
(separationChecking, "Enable experimental separation checking (requires captureChecking)"),
7069
(into, "Allow into modifier on parameter types"),
7170
(modularity, "Enable experimental modularity features"),
72-
(packageObjectValues, "Enable experimental package objects as values"),
7371
(multiSpreads, "Enable experimental varargs with multi-spreads"),
7472
(subCases, "Enable experimental match expressions with sub-cases"),
7573
(relaxedLambdaSyntax, "Enable experimental relaxed lambda syntax"),

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -747,9 +747,10 @@ class Typer(@constructorOnly nestingLevel: Int = 0) extends Namer
747747
val sym = tree.tpe.termSymbol
748748
if sym.isNoValue && !ctx.isJava then
749749
if sym.is(Package)
750-
&& Feature.enabled(Feature.packageObjectValues)
751750
&& tree.tpe.member(nme.PACKAGE).hasAltWith(_.symbol.isPackageObject)
752751
then
752+
// The feature is in preview for 3.10
753+
Feature.checkPreviewFeature("package object values", tree.srcPos)
753754
typed(untpd.Select(untpd.TypedSplice(tree), nme.PACKAGE))
754755
else
755756
report.error(SymbolIsNotAValue(sym), tree.srcPos)

library/src/scala/language.scala

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ object language {
195195
*
196196
* @group experimental
197197
*/
198-
object experimental {
198+
object experimental:
199199

200200
import languageFeature.experimental._
201201

@@ -299,15 +299,15 @@ object language {
299299
* @see [[https://dotty.epfl.ch/docs/reference/experimental/into-modifier]]
300300
*/
301301
@compileTimeOnly("`into` can only be used at compile time in import statements")
302-
@deprecated("The into language import is no longer needed since the feature is now in preview", since = "3.8")
302+
@deprecated("The `into` language import is no longer needed since the feature is now in preview", since = "3.8")
303303
object into
304304

305305
/** Experimental support for named tuples.
306306
*
307307
* @see [[https://dotty.epfl.ch/docs/reference/experimental/named-tuples]]
308308
*/
309309
@compileTimeOnly("`namedTuples` can only be used at compile time in import statements")
310-
@deprecated("The experimental.namedTuples language import is no longer needed since the feature is now standard", since = "3.7")
310+
@deprecated("`experimental.namedTuples` is now standard, no language import is needed", since = "3.7")
311311
object namedTuples
312312

313313
/** Experimental support for new features for better modularity, including
@@ -327,15 +327,15 @@ object language {
327327
* @see [[http://dotty.epfl.ch/docs/reference/contextual/extension-methods]]
328328
*/
329329
@compileTimeOnly("`relaxedExtensionImports` can only be used at compile time in import statements")
330-
@deprecated("The experimental.relaxedExtensionImports language import is no longer needed since the feature is now standard", since = "3.4")
330+
@deprecated("`experimental.relaxedExtensionImports` is now standard, no language import is needed", since = "3.4")
331331
object relaxedExtensionImports
332332

333333
/** Enhance match type extractors to follow aliases and singletons.
334334
*
335335
* @see [[https://github.com/scala/improvement-proposals/pull/84]]
336336
*/
337337
@compileTimeOnly("`betterMatchTypeExtractors` can only be used at compile time in import statements")
338-
@deprecated("The experimental.betterMatchTypeExtractors language import is no longer needed since the feature is now standard. It now has no effect, including when setting an older source version.", since = "3.6")
338+
@deprecated("`experimental.betterMatchTypeExtractors` is now standard, no language import is needed", since = "3.6")
339339
object betterMatchTypeExtractors
340340

341341
/** Experimental support for quote pattern matching with polymorphic functions
@@ -350,12 +350,13 @@ object language {
350350
* @see [[https://github.com/scala/improvement-proposals/pull/79]]
351351
*/
352352
@compileTimeOnly("`betterFors` can only be used at compile time in import statements")
353-
@deprecated("The `experimental.betterFors` language import no longer has any effect, the feature is being stabilised and can be enabled using `-preview` flag", since = "3.7")
353+
@deprecated("`experimental.betterFors` is now standard, no language import is needed", since = "3.7")
354354
object betterFors
355355

356356
/** Experimental support for package object values
357357
*/
358358
@compileTimeOnly("`packageObjectValues` can only be used at compile time in import statements")
359+
@deprecated("The `experimental.packageObjectValues` language import is no longer needed since the feature is now in preview", since = "3.10")
359360
object packageObjectValues
360361

361362
/** Experimental support for multiple spread arguments.
@@ -368,13 +369,13 @@ object language {
368369
@compileTimeOnly("`subCases` can only be used at compile time in import statements")
369370
object subCases
370371

371-
/** Experimental support for single-line lambdas and case clause expressions after `:`
372+
/** Experimental support for single-line lambdas and case clause expressions after `:`
372373
*/
373374
@compileTimeOnly("`relaxedLambdaSyntax` can only be used at compile time in import statements")
374375
object relaxedLambdaSyntax
375-
}
376+
end experimental
376377

377-
/** The deprecated object contains features that are no longer officially suypported in Scala.
378+
/** The deprecated object contains features that are no longer officially suypported in Scala.
378379
* Features in this object are slated for removal. New code should not use them and
379380
* old code should migrate away from them.
380381
*/

tests/pos/packageObjectValues.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//> using options -language:experimental.packageObjectValues
1+
//> using options -preview
22

33
package object p { }
44

tests/run/pkgobjvals.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import language.experimental.packageObjectValues
1+
//> using options -preview
22

33
package a:
44
package object b:

0 commit comments

Comments
 (0)