Skip to content

Commit df69efb

Browse files
committed
Don't unwrap conversion
1 parent 414e1c5 commit df69efb

File tree

5 files changed

+16
-3
lines changed

5 files changed

+16
-3
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "ApproxFunBase"
22
uuid = "fbd15aa5-315a-5a7d-a8a4-24992e37be05"
3-
version = "0.9.5"
3+
version = "0.9.6"
44

55
[deps]
66
AbstractFFTs = "621f4979-c628-5d54-868e-fcf4e3e8185c"

src/Operators/Operator.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,9 @@ for f in [:iswrapperstructure, :iswrapperindexing, :iswrapperspaces]
8181
@eval $f(@nospecialize(_)) = false
8282
end
8383

84+
iswrapperstructure(A::Operator) = iswrapperstructure(typeof(A))
85+
iswrapperindexing(A::Operator) = iswrapperindexing(typeof(A))
86+
iswrapperspaces(A::Operator) = iswrapperspaces(typeof(A))
8487
iswrapper(A) = iswrapperstructure(A) || iswrapperindexing(A) || iswrapperspaces(A)
8588

8689
struct Functional <: OperatorStyle end

src/Operators/banded/Conversion.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,12 @@ end
129129
domainspace(C::ConversionWrapper) = C.domainspace
130130
rangespace(C::ConversionWrapper) = C.rangespace
131131

132+
ConversionWrapper(d::Space, r::Space, B::ConversionWrapper) =
133+
ConversionWrapper(d, r, B.op)
134+
132135
function ConversionWrapper(B::Operator,
133136
d::Space=domainspace(B), r::Space=rangespace(B))
134-
ConversionWrapper(d, r, unwrap(B))
137+
ConversionWrapper(d, r, B)
135138
end
136139
Conversion(A::Space,B::Space,C::Space) =
137140
ConversionWrapper(Conversion(B,C)*Conversion(A,B), A, C)

src/Operators/general/algebra.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,7 @@ end
619619

620620
# Conversions we always assume are intentional: no need to promote
621621
function *(A::Conversion, B::Conversion)
622-
T = TimesOperator(unwrap(A), unwrap(B))
622+
T = TimesOperator(A, B)
623623
ConversionWrapper(T, domainspace(B), rangespace(A))
624624
end
625625
*(A::Conversion, B::TimesOperator) = TimesOperator(A, B)

test/runtests.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,14 @@ end
453453
end
454454
@testset "conversion and constantoperator" begin
455455
A = Conversion(PointSpace(1:4), PointSpace(1:4))
456+
@test ApproxFunBase.iswrapper(A)
457+
@test ApproxFunBase.iswrapperstructure(A)
458+
@test ApproxFunBase.iswrapperindexing(A)
459+
@test ApproxFunBase.iswrapperspaces(A)
456460
@test convert(Number, A) == 1
461+
f = Fun(PointSpace(1:4))
462+
@test (A * A) * f == A * f == f
463+
@test ApproxFunBase.ConversionWrapper(A) === A
457464

458465
C = I : PointSpace(1:4)
459466
C2 = C * C

0 commit comments

Comments
 (0)