You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
classCobjectGivens:givencOrdering:Ordering[C] withoverridedefcompare(c0: C, c1: C) =0valgreeting="we love Givens"
Output
➜ scalac -d /tmp -Ycheck:all -feature givens.scala
checking givens.scala after phase typer
checking givens.scala after phase inlinedPositions
checking givens.scala after phase posttyper
checking givens.scala after phase pickler
checking givens.scala after phase inlining
checking givens.scala after phase postInlining
checking givens.scala after phase staging
checking givens.scala after phase pickleQuotes
checking givens.scala after phase MegaPhase{firstTransform, checkReentrant, elimPackagePrefixes, cookComments, checkStatic, checkLoopingImplicits, betaReduce, inlineVals, expandSAMs}
checking givens.scala after phase MegaPhase{elimRepeated, protectedAccessors, extmethods, uncacheGivenAliases, byNameClosures, hoistSuperArgs, specializeApplyMethods, refchecks, tryCatchPatterns, patternMatcher}
checking givens.scala after phase MegaPhase{elimOpaque, explicitOuter, explicitSelf, elimByName, stringInterpolatorOpt}
checking givens.scala after phase MegaPhase{pruneErasedDefs, uninitializedDefs, inlinePatterns, vcInlineMethods, seqLiterals, intercepted, getters, specializeFunctions, liftTry, collectNullableFields, elimOuterSelect, resolveSuper, functionXXLForwarders, paramForwarding, genericTuples, letOverApply, arrayConstructors}
checking givens.scala after phase erasure
checking givens.scala after phase MegaPhase{elimErasedValueType, pureStats, vcElideAllocations, arrayApply, elimPolyFunction, tailrec, completeJavaEnums, mixin, lazyVals, memoize, nonLocalReturns, capturedVars}
--FeatureWarning: givens.scala:5:8------------------------------------------------------------------------------------------------------------5|givencOrdering:Ordering[C] with|^|Definition of implicit conversion method mkOrderingOps should be enabled
| by adding the importclause 'importscala.language.implicitConversions'
| or by setting the compiler option -language:implicitConversions.
|See the Scala docs for value scala.language.implicitConversions for a discussion
| why the feature should be explicitly enabled.
checking givens.scala after phase constructors
--FeatureWarning: givens.scala:5:8------------------------------------------------------------------------------------------------------------5|givencOrdering:Ordering[C] with|^|Definition of implicit conversion method mkOrderingOps should be enabled
| by adding the importclause 'importscala.language.implicitConversions'
| or by setting the compiler option -language:implicitConversions.
|See the Scala docs for value scala.language.implicitConversions for a discussion
| why the feature should be explicitly enabled.
checking givens.scala after phase MegaPhase{lambdaLift, elimStaticThis, countOuterAccesses}
--FeatureWarning: givens.scala:5:8------------------------------------------------------------------------------------------------------------5|givencOrdering:Ordering[C] with|^|Definition of implicit conversion method mkOrderingOps should be enabled
| by adding the importclause 'importscala.language.implicitConversions'
| or by setting the compiler option -language:implicitConversions.
|See the Scala docs for value scala.language.implicitConversions for a discussion
| why the feature should be explicitly enabled.
checking givens.scala after phase MegaPhase{dropOuterAccessors, checkNoSuperThis, flatten, transformWildcards, moveStatic, expandPrivate, restoreScopes, selectStatic, Collect entry points, collectSuperCalls, repeatableAnnotations}
--FeatureWarning: givens.scala:5:8------------------------------------------------------------------------------------------------------------5|givencOrdering:Ordering[C] with|^|Definition of implicit conversion method mkOrderingOps should be enabled
| by adding the importclause 'importscala.language.implicitConversions'
| or by setting the compiler option -language:implicitConversions.
|See the Scala docs for value scala.language.implicitConversions for a discussion
| why the feature should be explicitly enabled.
checking givens.scala after phase genSJSIR
--FeatureWarning: givens.scala:5:8------------------------------------------------------------------------------------------------------------5|givencOrdering:Ordering[C] with|^|Definition of implicit conversion method mkOrderingOps should be enabled
| by adding the importclause 'importscala.language.implicitConversions'
| or by setting the compiler option -language:implicitConversions.
|See the Scala docs for value scala.language.implicitConversions for a discussion
| why the feature should be explicitly enabled.
checking givens.scala after phase genBCode
--FeatureWarning: givens.scala:5:8------------------------------------------------------------------------------------------------------------5|givencOrdering:Ordering[C] with|^|Definition of implicit conversion method mkOrderingOps should be enabled
| by adding the importclause 'importscala.language.implicitConversions'
| or by setting the compiler option -language:implicitConversions.
|See the Scala docs for value scala.language.implicitConversions for a discussion
| why the feature should be explicitly enabled.
Expectation
No feature warning for what I did not write.
[[syntax trees at end of erasure]] // givens.scala
package <empty> {
@SourceFile("givens.scala") class C() extends Object() {}
final lazy module val Givens: Givens = new Givens()
@SourceFile("givens.scala") final module class Givens() extends Object() {
private def writeReplace(): Object = new scala.runtime.ModuleSerializationProxy(classOf[Givens])
final lazy module given val cOrdering: Givens.cOrdering = new Givens.cOrdering()
final module class cOrdering() extends Object(), scala.math.Ordering {
private def writeReplace(): Object = new scala.runtime.ModuleSerializationProxy(classOf[Givens.cOrdering])
override def compare(c0: C, c1: C): Int = 0
override def compare(x: Object, y: Object): Int = this.compare(x.asInstanceOf[C], y.asInstanceOf[C])
def tryCompare(x: Object, y: Object): Option = this.tryCompare(x, y)
override def reverse(): scala.math.PartialOrdering = this.reverse()
}
def greeting(): String = "we love Givens"
}
}
[[syntax trees at end of MegaPhase{elimErasedValueType, pureStats, vcElideAllocations, arrayApply, elimPolyFunction, tailrec, completeJavaEnums, mixin, lazyVals, memoize, nonLocalReturns, capturedVars}]] // givens.scala
package <empty> {
@SourceFile("givens.scala") class C() extends Object {
super()
}
final lazy module val Givens: Givens = new Givens()
@SourceFile("givens.scala") final module class Givens() extends Object {
super()
private def writeReplace(): Object = new scala.runtime.ModuleSerializationProxy(classOf[Givens])
final lazy module given val cOrdering: Givens.cOrdering = new Givens.cOrdering()
final module class cOrdering() extends Object, scala.math.Ordering {
super()
def reversed(): java.util.Comparator = super[Comparator].reversed()
def thenComparing(x$0: java.util.Comparator): java.util.Comparator = super[Comparator].thenComparing(x$0)
def thenComparing(x$0: java.util.function.Function, x$1: java.util.Comparator): java.util.Comparator =
super[Comparator].thenComparing(x$0, x$1)
def thenComparing(x$0: java.util.function.Function): java.util.Comparator = super[Comparator].thenComparing(x$0)
def thenComparingInt(x$0: java.util.function.ToIntFunction): java.util.Comparator = super[Comparator].thenComparingInt(x$0)
def thenComparingLong(x$0: java.util.function.ToLongFunction): java.util.Comparator = super[Comparator].thenComparingLong(x$0)
def thenComparingDouble(x$0: java.util.function.ToDoubleFunction): java.util.Comparator = super[Comparator].thenComparingDouble(x$0)
super[PartialOrdering].$init()
super[Ordering].$init()
def tryCompare(x: Object, y: Object): Some = super[Ordering].tryCompare(x, y)
override def lteq(x: Object, y: Object): Boolean = super[Ordering].lteq(x, y)
override def gteq(x: Object, y: Object): Boolean = super[Ordering].gteq(x, y)
override def lt(x: Object, y: Object): Boolean = super[Ordering].lt(x, y)
override def gt(x: Object, y: Object): Boolean = super[Ordering].gt(x, y)
override def equiv(x: Object, y: Object): Boolean = super[Ordering].equiv(x, y)
def max(x: Object, y: Object): Object = super[Ordering].max(x, y)
def min(x: Object, y: Object): Object = super[Ordering].min(x, y)
override def reverse(): scala.math.Ordering = super[Ordering].reverse()
def isReverseOf(other: scala.math.Ordering): Boolean = super[Ordering].isReverseOf(other)
def on(f: Function1): scala.math.Ordering = super[Ordering].on(f)
def orElse(other: scala.math.Ordering): scala.math.Ordering = super[Ordering].orElse(other)
def orElseBy(f: Function1, ord: scala.math.Ordering): scala.math.Ordering = super[Ordering].orElseBy(f, ord)
implicit def mkOrderingOps(lhs: Object): Ordering.this.OrderingOps = super[Ordering].mkOrderingOps(lhs)
private def writeReplace(): Object = new scala.runtime.ModuleSerializationProxy(classOf[Givens.cOrdering])
override def compare(c0: C, c1: C): Int = 0
override def compare(x: Object, y: Object): Int = this.compare(x.asInstanceOf[C], y.asInstanceOf[C])
def tryCompare(x: Object, y: Object): Option = this.tryCompare(x, y)
override def reverse(): scala.math.PartialOrdering = this.reverse()
}
private val greeting: String = "we love Givens"
def greeting(): String = Givens.greeting
}
}
The text was updated successfully, but these errors were encountered:
smarter
changed the title
-feature -check:all induces warnings after megaphase following erasure
-feature -Ycheck:all induces warnings after megaphase following erasure
Mar 7, 2022
Compiler version
3.1.1
Minimized code
Output
Expectation
No feature warning for what I did not write.
The text was updated successfully, but these errors were encountered: