@@ -67,11 +67,15 @@ sealed trait Space:
67
67
isSubspaceCache.getOrElseUpdate(b, computeIsSubspace(this , b))
68
68
}
69
69
70
- private var mySimplify : Space = _
70
+ private var mySimplify : Space | Null = _
71
71
72
72
def simplify (using Context ): Space =
73
- if mySimplify == null then mySimplify = SpaceEngine .computeSimplify(this )
74
- mySimplify
73
+ val simplify = mySimplify
74
+ if simplify == null then
75
+ val simplify = SpaceEngine .computeSimplify(this )
76
+ mySimplify = simplify
77
+ simplify
78
+ else simplify
75
79
end Space
76
80
77
81
/** Empty space */
@@ -84,15 +88,19 @@ case object Empty extends Space
84
88
*
85
89
*/
86
90
case class Typ (tp : Type , decomposed : Boolean = true ) extends Space :
87
- private var myDecompose : List [Typ ] = _
91
+ private var myDecompose : List [Typ ] | Null = _
88
92
89
93
def canDecompose (using Context ): Boolean = decompose != SpaceEngine .ListOfTypNoType
90
94
91
95
def decompose (using Context ): List [Typ ] =
92
- if myDecompose == null then myDecompose = tp match
93
- case SpaceEngine .Parts (parts) => parts.map(Typ (_, decomposed = true ))
94
- case _ => SpaceEngine .ListOfTypNoType
95
- myDecompose
96
+ val decompose = myDecompose
97
+ if decompose == null then
98
+ val decompose = tp match
99
+ case SpaceEngine .Parts (parts) => parts.map(Typ (_, decomposed = true ))
100
+ case _ => SpaceEngine .ListOfTypNoType
101
+ myDecompose = decompose
102
+ decompose
103
+ else decompose
96
104
end Typ
97
105
98
106
/** Space representing an extractor pattern */
0 commit comments