@@ -315,6 +315,7 @@ rule customElabChildren(KL:KLabel) =>
315315*/
316316syntax K ::= "isElabNaked" "(" K ")" [function]
317317rule isElabNaked(K:K) =>
318+ //warning: cannot use ==Bool in the first expression - looks like isTypedExp(Qual) will not be computed
318319 (isRawVal(K) ==K true)
319320 orBool (getKLabel(K) ==KLabel ' TypeName)
320321 orBool (getKLabel(K) ==KLabel 'ClassOrInterfaceType)
@@ -548,13 +549,13 @@ when
548549
549550rule [elabCoolStatement]:
550551 (elabRes(K:K) => .) ~> elab(_:KLabel(_,, (CHOLE => elabRes(K)),, _))
551- when
552- notBool isElabIndependent(K)
552+ /* when
553+ notBool isElabIndependent(K)*/
553554
554- rule [elabCoolExpressionOrKResult]:
555+ /* rule [elabCoolExpressionOrKResult]:
555556 (elabRes(ElabIndep:K) => .) ~> elab(_:KLabel(_,, (CHOLE => ElabIndep),, _))
556557when
557- isElabIndependent(ElabIndep)
558+ isElabIndependent(ElabIndep)*/
558559
559560/*Was KR:ElabIndependent before, but in fact only KResult may stay free in this position.*/
560561rule [elabCoolKResult]:
@@ -604,9 +605,11 @@ rule isElab(.KList) => true
604605Used in defaut cooling rules of elaboration phase, to distinguish between elborated statements and elaborated
605606 expressions. When expressions are cooled they are unwrapped fron thei elabRes() wrapper.
606607*/
608+ /*
607609syntax K ::= "isElabIndependent" "(" K ")" [function]
608610rule isElabIndependent(K:K)
609611 => (isKResult(K) ==K true) orBool (isTypedExp(K) ==K true)
612+ */
610613
611614//@ True if given KList have no terms of the form elabRes(...), false otherwise.
612615syntax K ::= "haveNoElabRes" "(" KList ")" [function]
@@ -749,7 +752,7 @@ when notBool (X in keys(StEnv))
749752
750753rule [elabFieldWithQThis]:
751754 elabDispose('Field( ' QThis(Class:ClassType),, X:Id ))
752- => elab('Field( ' QThis(Class:ClassType) :: Class,, X )) ?? elab('Field( Class,, X))
755+ => elab('Field( elabRes( ' QThis(Class:ClassType) :: Class) ,, X )) ?? elab('Field( Class,, X))
753756when
754757 Class =/=K noClass
755758
@@ -1193,7 +1196,7 @@ when
11931196
11941197rule [elabQNewInstance-resolve-class]:
11951198 (. => resolveInnerClass(QualClass, Name))
1196- ~> elab(' QNewInstance(_::QualClass:ClassType,, _:K,,
1199+ ~> elab(' QNewInstance(elabRes( _::QualClass:ClassType) ,, _:K,,
11971200 (Name:Id => CHOLE),,
11981201 _))
11991202
@@ -1231,11 +1234,8 @@ rule [existsClass]:
12311234 will be noValue.
12321235*/
12331236rule [elab-QNewInstance]:
1234- elab('QNewInstance(Qual:K,, Arg2:K,, T:RefType,, Arg4:K,, elabRes(ActualArgsList:K),, ' None (.KList)))
1237+ elab('QNewInstance(elabRes( Qual:K) ,, Arg2:K,, T:RefType,, Arg4:K,, elabRes(ActualArgsList:K),, ' None (.KList)))
12351238 => elabRes('QNewInstance(Qual,, Arg2,, T,, Arg4,, ActualArgsList,, ' None (.KList)) :: T)
1236- when
1237- //warning: cannot use ==Bool in the first expression - looks like isTypedExp(Qual) will not be computed
1238- (isTypedExp(Qual) ==K true) orBool (Qual ==K noValue)
12391239
12401240rule [elabInstanceOf]:
12411241 elabDispose('InstanceOf(TE:TypedExp,, RT2:RefType)) => elabRes(' InstanceOf(TE,, RT2 ) :: bool )
@@ -1293,7 +1293,7 @@ rule count(I:Int, .KList) => I::int
12931293//@ both in elaboration and in execution phase.
12941294//@ Performance: Using this rule instead of the rule above leads to execution performance decrease by 5\%
12951295//@ in helloWorld, with medium execution time rising from 9.6s to 10.1s
1296- rule [elabExpressions]:
1296+ rule [runtime- elabExpressions]:
12971297 KL:KLabel(Ks:KList) => elab(KL(Ks))
12981298when
12991299 isExpressionLabel(KL)
0 commit comments