@@ -72,6 +72,19 @@ module Util =
7272 if i= 0 then ( makeDelegate com ( Some info.lambdaArgArity) x) else x) args
7373 else args
7474
75+ let resolveTypeRef com ( info : Fable.ApplyInfo ) generic t =
76+ let genInfo =
77+ { makeGeneric = generic
78+ ; genericAvailability = info.genericAvailability }
79+ match t with
80+ | Fable.GenericParam _ when not info.genericAvailability ->
81+ " `typeof` is being called on a generic parameter, "
82+ + " consider inlining the method (for `internal` members) "
83+ + " or using `PassGenericsAttribute`."
84+ |> addWarning com info
85+ makeTypeRef genInfo t
86+ | t -> makeTypeRef genInfo t
87+
7588 let instanceArgs ( callee : Fable.Expr option ) ( args : Fable.Expr list ) =
7689 match callee with
7790 | Some callee -> ( callee, args)
@@ -569,18 +582,9 @@ module private AstPass =
569582 Fable.Throw ( newError None Fable.Any args, typ, r) |> Some
570583 // Type ref
571584 | " typeOf" | " typeDefOf" ->
572- let genInfo =
573- { makeGeneric = info.methodName = " typeOf"
574- ; genericAvailability = info.genericAvailability }
575- match info.methodTypeArgs with
576- | [ Fable.GenericParam _ as t] when not info.genericAvailability ->
577- " `typeof` is being called on a generic parameter, "
578- + " consider inlining the method (for `internal` members) "
579- + " or using `PassGenericsAttribute`."
580- |> addWarning com info
581- makeTypeRef genInfo t |> Some
582- | [ t] -> makeTypeRef genInfo t |> Some
583- | _ -> None
585+ info.methodTypeArgs.Head
586+ |> resolveTypeRef com info ( info.methodName = " typeOf" )
587+ |> Some
584588 // Concatenates two lists
585589 | " op_Append" ->
586590 CoreLibCall( " List" , Some " append" , false , args)
@@ -796,7 +800,7 @@ module private AstPass =
796800 | " typeTestGeneric" , ( None, [ expr]) ->
797801 makeTypeTest i.range i.methodTypeArgs.Head expr |> Some
798802 | " createInstance" , ( None, _) ->
799- let typRef , args = makeNonGenTypeRef i.methodTypeArgs.Head, []
803+ let typRef , args = resolveTypeRef com i false i.methodTypeArgs.Head, []
800804 Fable.Apply ( typRef, args, Fable.ApplyCons, i.returnType, i.range) |> Some
801805 | _ -> None
802806
0 commit comments