Skip to content

Commit

Permalink
Merge pull request #10347 from som-snytt/tweak/feature-setting-check
Browse files Browse the repository at this point in the history
Check feature setting eagerly
  • Loading branch information
lrytz committed Mar 17, 2023
2 parents 36da1b3 + e12f7b6 commit d0f2aab
Showing 1 changed file with 17 additions and 17 deletions.
34 changes: 17 additions & 17 deletions src/compiler/scala/tools/nsc/typechecker/Typers.scala
Expand Up @@ -734,24 +734,24 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
*/
def checkFeature(pos: Position, featureTrait: Symbol, construct: => String = "", immediate: Boolean = false): Boolean =
isPastTyper || {
val nestedOwners =
featureTrait.owner.ownerChain.takeWhile(_ != languageFeatureModule.moduleClass).reverse
val featureName = nestedOwners.map(s => s"${s.name}.").mkString + featureTrait.name
def action(): Boolean = {
def hasImport = inferImplicitByType(featureTrait.tpe, context).isSuccess
def hasOption = settings.language.contains(featureName)
hasOption || hasImport || {
val Some(AnnotationInfo(_, List(Literal(Constant(featureDesc: String)), Literal(Constant(required: Boolean))), _)) =
featureTrait.getAnnotation(LanguageFeatureAnnot): @unchecked
context.featureWarning(pos, featureName, featureDesc, featureTrait, construct, required)
false
val featureName = {
val nestedOwners = featureTrait.owner.ownerChain.takeWhile(_ != languageFeatureModule.moduleClass).reverse
nestedOwners.map(s => s"${s.name}.").mkString + featureTrait.name
}
settings.language.contains(featureName) || {
def action(): Boolean = {
if (!immediate)
debuglog(s"deferred check of feature $featureTrait")
def hasImport = inferImplicitByType(featureTrait.tpe, context).isSuccess
hasImport || {
val Some(AnnotationInfo(_, List(Literal(Constant(featureDesc: String)), Literal(Constant(required: Boolean))), _)) =
featureTrait.getAnnotation(LanguageFeatureAnnot): @unchecked
context.featureWarning(pos, featureName, featureDesc, featureTrait, construct, required)
false
}
}
}
if (immediate) {
action()
} else {
unit.addPostUnitCheck(() => action())
true
if (immediate) action()
else { unit.addPostUnitCheck(() => action()); true }
}
}

Expand Down

0 comments on commit d0f2aab

Please sign in to comment.