@@ -67,11 +67,15 @@ sealed trait Space:
67
67
isSubspaceCache.getOrElseUpdate(b, computeIsSubspace(this , b))
68
68
}
69
69
70
- private var mySimplified : Space = _
70
+ private var mySimplified : Space | Null = _
71
71
72
72
def simplify (using Context ): Space =
73
- if mySimplified == null then mySimplified = SpaceEngine .computeSimplify(this )
74
- mySimplified
73
+ val simplified = mySimplified
74
+ if simplified == null then
75
+ val simplified = SpaceEngine .computeSimplify(this )
76
+ mySimplified = simplified
77
+ simplified
78
+ else simplified
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