@@ -34,7 +34,7 @@ rule [ArrayVarDecIdDiscard]:
3434rule [VarDecWithArrayInitDesugar]:
3535 ' LocalVarDec(_:K,, T:Type,, 'ListWrap(' VarDec(
3636 X:Id,,
37- ( 'ArrayInit(InitK:K) => ' NewArray(T,, 'ListWrap(.KList),, ' ArrayInit(InitK)) )
37+ ( 'ArrayInit(InitK:K) => elab( ' NewArray(T,, 'ListWrap(.KList),, ' ArrayInit(InitK) )) )
3838 ))) [structural, anywhere]
3939
4040//same three rules for fields
@@ -58,7 +58,7 @@ rule [ArrayFieldDecIdDiscard]:
5858rule [FieldDecWithArrayInitDesugar]:
5959 ' FieldDec(_:K,, T:Type,, 'ListWrap(' VarDec(
6060 X:Id,,
61- ( 'ArrayInit(InitK:K) => ' NewArray(T,, 'ListWrap(.KList),, ' ArrayInit(InitK)) )
61+ ( 'ArrayInit(InitK:K) => elab( ' NewArray(T,, 'ListWrap(.KList),, ' ArrayInit(InitK) )) )
6262 ))) [structural]
6363
6464//first two rules - desugaring C-like array declarations, for params
@@ -104,28 +104,28 @@ rule [lookupArrayLocation]:
104104
105105rule [ArrayIndexOutOfBoundsException]:
106106 'ArrayAccess(arrayRef(_,_,M:Int) :: _,, N:Int::_)::_
107- => ' Throw('NewInstance(
107+ => elab( ' Throw('NewInstance(
108108 ' None (.KList),,
109109 (class String2 Id("java.lang.ArrayIndexOutOfBoundsException" )),,
110110 'ListWrap( Int2String(N) ),,
111111 ' None (.KList)
112- ))
112+ )))
113113when notBool ((N >=Int 0) andBool (N <Int M))
114114 [structural, anywhere]
115115
116- // Required to desugar effects of the previous rule , when exception happens
117- //inside lvalue.
116+ /*@ Required when a JVM-related exception (e.g. produced by the semantics at runtime) is thrown inside a lvalue.
117+ */
118118rule [LvalueIndexOutOfBoundsDesugar]:
119- lvalue('Throw(K:K)) => ' Throw(K)
119+ lvalue(elab( 'Throw(K:K))) => elab( ' Throw(K) )
120120
121121rule [arrayAccessNull]:
122122 'ArrayAccess(null::_ ,, _)::_
123- => ' Throw('NewInstance(
123+ => elab( ' Throw('NewInstance(
124124 ' None (.KList),,
125125 class String2 Id("java.lang.NullPointerException" ),,
126126 'ListWrap( null ),,
127127 ' None (.KList)
128- ))
128+ )))
129129 [structural, anywhere]
130130
131131//Array length, as defined in JDK
@@ -174,12 +174,12 @@ when NI >=Int 0
174174
175175rule [NegativeArraySizeException]:
176176 checkNonNegative((NI:Int::_),, _)
177- => 'Throw(' NewInstance(
177+ => elab( 'Throw(' NewInstance(
178178 'None(.KList),,
179179 class String2Id("java.lang.NegativeArraySizeException"),,
180180 ' ListWrap( null ),,
181181 'None(.KList)
182- ))
182+ )))
183183when
184184 NI <Int 0
185185
@@ -279,7 +279,7 @@ rule [assignImpl]:
279279
280280rule [ArrayStoreException]:
281281 assignImpl( false::bool, _, TV:TypedVal)
282- => ' Throw('NewInstance(
282+ => elab( ' Throw('NewInstance(
283283 ' None (.KList),,
284284 (class String2 Id("java.lang.ArrayStoreException" )),,
285285 'ListWrap(
@@ -295,7 +295,7 @@ rule [ArrayStoreException]:
295295 )
296296 ),,
297297 ' None (.KList)
298- ))
298+ )))
299299
300300//@ \subsection{Array initializer}
301301
0 commit comments