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