@@ -172,11 +172,10 @@ end
172
172
argtail (x, rest... ) = rest
173
173
tail (x:: Tuple ) = argtail (x... )
174
174
175
- <<<<<< < HEAD
176
- tuple_type_head (T:: Type ) = (@_pure_meta ; fieldtype (T:: Type{<:Tuple} , 1 ))
175
+ tuple_type_head (T:: Type ) = (@_unsafe_pure_meta ; fieldtype (T:: Type{<:Tuple} , 1 ))
177
176
178
177
function tuple_type_tail (T:: Type )
179
- @_pure_meta
178
+ @_unsafe_pure_meta
180
179
if isa (T, UnionAll)
181
180
return UnionAll (T. var, tuple_type_tail (T. body))
182
181
elseif isa (T, Union)
@@ -187,31 +186,6 @@ function tuple_type_tail(T::Type)
187
186
return T
188
187
end
189
188
return Tuple{argtail (T. parameters... )... }
190
- ====== =
191
- # TODO : a better / more infer-able definition would pehaps be
192
- # tuple_type_head(T::Type) = fieldtype(T::Type{<:Tuple}, 1)
193
- tuple_type_head (T:: UnionAll ) = (@_unsafe_pure_meta ; UnionAll (T. var, tuple_type_head (T. body)))
194
- function tuple_type_head (T:: Union )
195
- @_unsafe_pure_meta
196
- return Union{tuple_type_head (T. a), tuple_type_head (T. b)}
197
- end
198
- function tuple_type_head (T:: DataType )
199
- @_unsafe_pure_meta
200
- T. name === Tuple. name || throw (MethodError (tuple_type_head, (T,)))
201
- return unwrapva (T. parameters[1 ])
202
- end
203
-
204
- tuple_type_tail (T:: UnionAll ) = (@_unsafe_pure_meta ; UnionAll (T. var, tuple_type_tail (T. body)))
205
- function tuple_type_tail (T:: Union )
206
- @_unsafe_pure_meta
207
- return Union{tuple_type_tail (T. a), tuple_type_tail (T. b)}
208
- end
209
- function tuple_type_tail (T:: DataType )
210
- @_unsafe_pure_meta
211
- T. name === Tuple. name || throw (MethodError (tuple_type_tail, (T,)))
212
- if isvatuple (T) && length (T. parameters) == 1
213
- return T
214
- >>>>>> > Rename bootstrap version of unsafe_pure
215
189
end
216
190
end
217
191
0 commit comments