@@ -15,6 +15,9 @@ Make( ::Type{T}) where {T} = Make0{T}()
1515Make0 (:: Type{T} ) where {T} = Make0 {T} ()
1616make (:: Type{T} ) where {T} = Make0 {maketype(T)} ()
1717
18+ # default
19+ maketype (:: Type{T} ) where {T} = T
20+
1821struct Make1{T,X} <: Make{T}
1922 x:: X
2023end
@@ -29,6 +32,9 @@ Make1{T}(::Type{X}) where {T,X} = Make1{T,Type{X}}(X)
2932make (:: Type{T} , x:: X ) where {T,X} = Make {maketype(T,x)} (x)
3033make (:: Type{T} , :: Type{X} ) where {T,X} = Make {maketype(T,X)} (X)
3134
35+ # default
36+ maketype (:: Type{T} , x) where {T} = T
37+
3238find_deduced_type (:: Type{T} , :: X , ) where {T,X} = deduce_type (T, gentype (X))
3339find_deduced_type (:: Type{T} , :: Type{X} ) where {T,X} = deduce_type (T, X)
3440
@@ -53,6 +59,9 @@ make(::Type{T}, ::Type{X}, y::Y) where {T,X,Y} = Make{maketype(T,X,y)}(X, y
5359make (:: Type{T} , x:: X , :: Type{Y} ) where {T,X,Y} = Make {maketype(T,x,Y)} (x, Y)
5460make (:: Type{T} , :: Type{X} , :: Type{Y} ) where {T,X,Y} = Make {maketype(T,X,Y)} (X, Y)
5561
62+ # default
63+ maketype (:: Type{T} , x, y) where {T} = T
64+
5665find_deduced_type (:: Type{T} , :: X , :: Y ) where {T,X,Y} = deduce_type (T, gentype (X), gentype (Y))
5766find_deduced_type (:: Type{T} , :: Type{X} , :: Y ) where {T,X,Y} = deduce_type (T, X, gentype (Y))
5867find_deduced_type (:: Type{T} , :: X , :: Type{Y} ) where {T,X,Y} = deduce_type (T, gentype (X), Y)
@@ -93,6 +102,8 @@ make(::Type{T}, ::Type{X}, y::Y, ::Type{Z}) where {T,X,Y,Z} = Make3{maketyp
93102make (:: Type{T} , x:: X , :: Type{Y} , :: Type{Z} ) where {T,X,Y,Z} = Make3 {maketype(T, x, Y, Z)} (x, Y, Z)
94103make (:: Type{T} , :: Type{X} , :: Type{Y} , :: Type{Z} ) where {T,X,Y,Z} = Make3 {maketype(T, X, Y, Z)} (X, Y, Z)
95104
105+ # default
106+ maketype (:: Type{T} , x, y, z) where {T} = T
96107
97108# deduce_type
98109
0 commit comments