Skip to content

Commit 611dda9

Browse files
authored
vararg type (#2150)
* vararg type * Update compiler.jl
1 parent 31055b5 commit 611dda9

File tree

1 file changed

+35
-29
lines changed

1 file changed

+35
-29
lines changed

src/compiler.jl

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -112,29 +112,32 @@ const known_ops = Dict{DataType,Tuple{Symbol,Int,Union{Nothing,Tuple{Symbol,Data
112112
Tys = (Float32, Float64)
113113

114114
if length(sparam_vals) == arity
115-
T = first(sparam_vals)::Type
116-
legal = T Tys
117-
118-
if legal
119-
if name == :ldexp
120-
if !(sparam_vals[2] <: Integer)
121-
legal = false
122-
end
123-
elseif name == :pow
124-
if sparam_vals[2] <: Integer
125-
name = :powi
126-
elseif sparam_vals[2] != T
127-
legal = false
128-
end
129-
elseif name == :jl_rem2pi
130-
else
131-
if !all(==(T), sparam_vals)
132-
legal = false
115+
T = first(sparam_vals)
116+
if (T isa Type)
117+
T = T::Type
118+
legal = T Tys
119+
120+
if legal
121+
if name == :ldexp
122+
if !(sparam_vals[2] <: Integer)
123+
legal = false
124+
end
125+
elseif name == :pow
126+
if sparam_vals[2] <: Integer
127+
name = :powi
128+
elseif sparam_vals[2] != T
129+
legal = false
130+
end
131+
elseif name == :jl_rem2pi
132+
else
133+
if !all(==(T), sparam_vals)
134+
legal = false
135+
end
133136
end
134137
end
135-
end
136-
if legal
137-
return name, toinject, T
138+
if legal
139+
return name, toinject, T
140+
end
138141
end
139142
end
140143
end
@@ -144,15 +147,18 @@ const known_ops = Dict{DataType,Tuple{Symbol,Int,Union{Nothing,Tuple{Symbol,Data
144147
Tys = (Complex{Float32}, Complex{Float64})
145148
if length(sparam_vals) == arity
146149
T = first(sparam_vals)
147-
legal = T Tys
148-
149-
if legal
150-
if !all(==(T), sparam_vals)
151-
legal = false
150+
if (T isa Type)
151+
T = T::Type
152+
legal = T Tys
153+
154+
if legal
155+
if !all(==(T), sparam_vals)
156+
legal = false
157+
end
158+
end
159+
if legal
160+
return name, toinject, T
152161
end
153-
end
154-
if legal
155-
return name, toinject, T
156162
end
157163
end
158164
end

0 commit comments

Comments
 (0)