@@ -3066,30 +3066,30 @@ class Typer extends Namer
3066
3066
for err <- nestedCtx.reporter.allErrors.take(1 ) do
3067
3067
rememberSearchFailure(qual,
3068
3068
SearchFailure (app.withType(FailedExtension (app, selectionProto, err.msg))))
3069
+
3070
+ // try an implicit conversion or given extension
3071
+ if ctx.mode.is(Mode .ImplicitsEnabled ) && ! tree.name.isConstructorName && qual.tpe.isValueType then
3072
+ trace(i " try insert impl on qualifier $tree $pt" ) {
3073
+ val selProto = selectionProto
3074
+ inferView(qual, selProto) match
3075
+ case SearchSuccess (found, _, _, isExtension) =>
3076
+ if isExtension then return found
3077
+ else
3078
+ checkImplicitConversionUseOK(found)
3079
+ return typedSelect(tree, pt, found)
3080
+ case failure : SearchFailure =>
3081
+ if failure.isAmbiguous then
3082
+ return (
3083
+ if canDefineFurther(qual.tpe.widen) then
3084
+ tryExtensionOrConversion(tree, pt, mbrProto, qual, locked, compat, privateOK)
3085
+ else
3086
+ err.typeMismatch(qual, selProto, failure.reason) // TODO: report NotAMember instead, but need to be aware of failure
3087
+ )
3088
+ rememberSearchFailure(qual, failure)
3089
+ }
3069
3090
catch case ex : TypeError =>
3070
3091
rememberSearchFailure(qual,
3071
3092
SearchFailure (qual.withType(NestedFailure (ex.toMessage, selectionProto))))
3072
-
3073
- // try an implicit conversion or given extension
3074
- if ctx.mode.is(Mode .ImplicitsEnabled ) && ! tree.name.isConstructorName && qual.tpe.isValueType then
3075
- trace(i " try insert impl on qualifier $tree $pt" ) {
3076
- val selProto = selectionProto
3077
- inferView(qual, selProto) match
3078
- case SearchSuccess (found, _, _, isExtension) =>
3079
- if isExtension then return found
3080
- else
3081
- checkImplicitConversionUseOK(found)
3082
- return typedSelect(tree, pt, found)
3083
- case failure : SearchFailure =>
3084
- if failure.isAmbiguous then
3085
- return (
3086
- if canDefineFurther(qual.tpe.widen) then
3087
- tryExtensionOrConversion(tree, pt, mbrProto, qual, locked, compat, privateOK)
3088
- else
3089
- err.typeMismatch(qual, selProto, failure.reason) // TODO: report NotAMember instead, but need to be aware of failure
3090
- )
3091
- rememberSearchFailure(qual, failure)
3092
- }
3093
3093
EmptyTree
3094
3094
end tryExtensionOrConversion
3095
3095
0 commit comments