@@ -108,6 +108,22 @@ private Conversion ImplicitConversion(ResolveResult resolveResult, IType toType,
108108 return c ;
109109 if ( ImplicitConstantExpressionConversion ( resolveResult , toType ) )
110110 return Conversion . ImplicitConstantExpressionConversion ;
111+ }
112+ if ( resolveResult is InterpolatedStringResolveResult )
113+ {
114+ if ( toType . IsKnownType ( KnownTypeCode . IFormattable ) || toType . IsKnownType ( KnownTypeCode . FormattableString ) )
115+ return Conversion . ImplicitInterpolatedStringConversion ;
116+ }
117+ if ( resolveResult . Type . Kind == TypeKind . Dynamic )
118+ return Conversion . ImplicitDynamicConversion ;
119+ c = AnonymousFunctionConversion ( resolveResult , toType ) ;
120+ if ( c != Conversion . None )
121+ return c ;
122+ c = MethodGroupConversion ( resolveResult , toType ) ;
123+ if ( c != Conversion . None )
124+ return c ;
125+ if ( resolveResult . IsCompileTimeConstant )
126+ {
111127 c = StandardImplicitConversion ( resolveResult . Type , toType , allowTuple ) ;
112128 if ( c != Conversion . None )
113129 return c ;
@@ -139,20 +155,7 @@ private Conversion ImplicitConversion(ResolveResult resolveResult, IType toType,
139155 {
140156 c = ImplicitConversion ( resolveResult . Type , toType , allowUserDefined , allowTuple ) ;
141157 }
142- if ( c != Conversion . None )
143- return c ;
144- }
145- if ( resolveResult is InterpolatedStringResolveResult )
146- {
147- if ( toType . IsKnownType ( KnownTypeCode . IFormattable ) || toType . IsKnownType ( KnownTypeCode . FormattableString ) )
148- return Conversion . ImplicitInterpolatedStringConversion ;
149158 }
150- if ( resolveResult . Type . Kind == TypeKind . Dynamic )
151- return Conversion . ImplicitDynamicConversion ;
152- c = AnonymousFunctionConversion ( resolveResult , toType ) ;
153- if ( c != Conversion . None )
154- return c ;
155- c = MethodGroupConversion ( resolveResult , toType ) ;
156159 return c ;
157160 }
158161
0 commit comments