From dbde4e80475ef1493555fe0c509ad9ccaab01d69 Mon Sep 17 00:00:00 2001 From: Bruder John Date: Fri, 5 Jul 2024 09:13:27 +0200 Subject: [PATCH] Some small changes for SemanticAnalyzer --- src/main/java/ast/type/type/TypeEnum.java | 3 ++- src/main/java/semantic/SemanticAnalyzer.java | 19 +++++++++++++++++- .../AllFeaturesClassExample.class | Bin 0 -> 1093 bytes .../BooleanOperations.class | Bin 0 -> 686 bytes .../CharManipulation.class | Bin 0 -> 638 bytes .../ConditionalStatements.class | Bin 0 -> 780 bytes .../EmptyClassExample.class | Bin 0 -> 208 bytes .../combinedFeatureTests/LoopExamples.class | Bin 0 -> 1004 bytes .../MethodOverloading.class | Bin 0 -> 1083 bytes .../input/singleFeatureTests/TestClass2.class | Bin 0 -> 199 bytes .../typedAstFeatureTests/CorrectTest.java | 18 +++++++++++------ src/test/resources/output/javac/Char.class | Bin 0 -> 302 bytes .../resources/output/javac/Comments.class | Bin 0 -> 206 bytes .../output/javac/ConstructorMethodCall.class | Bin 0 -> 327 bytes .../ConstructorMethodCallParameters.class | Bin 0 -> 356 bytes .../output/javac/ConstructorParameter.class | Bin 0 -> 226 bytes .../output/javac/ConstructorThisDot.class | Bin 0 -> 256 bytes src/test/resources/output/javac/DoWhile.class | Bin 0 -> 250 bytes .../resources/output/javac/EmptyClass.class | Bin 0 -> 194 bytes .../javac/EmptyClassWithConstructor.class | Bin 0 -> 228 bytes src/test/resources/output/javac/Field.class | Bin 0 -> 200 bytes .../javac/FieldWithAccessModifier.class | Bin 0 -> 236 bytes src/test/resources/output/javac/For.class | Bin 0 -> 240 bytes src/test/resources/output/javac/If.class | Bin 0 -> 239 bytes src/test/resources/output/javac/IfElse.class | Bin 0 -> 258 bytes .../resources/output/javac/IfElseIfElse.class | Bin 0 -> 290 bytes .../resources/output/javac/Increment.class | Bin 0 -> 350 bytes .../resources/output/javac/MainMethod.class | Bin 0 -> 265 bytes .../output/javac/MultipleClasses.class | Bin 0 -> 204 bytes .../output/javac/SelfReference.class | Bin 0 -> 453 bytes src/test/resources/output/javac/ThisDot.class | Bin 0 -> 227 bytes .../output/javac/VariableCalculation.class | Bin 0 -> 723 bytes .../output/javac/VariableCompare.class | Bin 0 -> 620 bytes .../resources/output/javac/VoidMethod.class | Bin 0 -> 240 bytes src/test/resources/output/javac/While.class | Bin 0 -> 249 bytes 35 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 src/test/resources/input/combinedFeatureTests/AllFeaturesClassExample.class create mode 100644 src/test/resources/input/combinedFeatureTests/BooleanOperations.class create mode 100644 src/test/resources/input/combinedFeatureTests/CharManipulation.class create mode 100644 src/test/resources/input/combinedFeatureTests/ConditionalStatements.class create mode 100644 src/test/resources/input/combinedFeatureTests/EmptyClassExample.class create mode 100644 src/test/resources/input/combinedFeatureTests/LoopExamples.class create mode 100644 src/test/resources/input/combinedFeatureTests/MethodOverloading.class create mode 100644 src/test/resources/input/singleFeatureTests/TestClass2.class create mode 100644 src/test/resources/output/javac/Char.class create mode 100644 src/test/resources/output/javac/Comments.class create mode 100644 src/test/resources/output/javac/ConstructorMethodCall.class create mode 100644 src/test/resources/output/javac/ConstructorMethodCallParameters.class create mode 100644 src/test/resources/output/javac/ConstructorParameter.class create mode 100644 src/test/resources/output/javac/ConstructorThisDot.class create mode 100644 src/test/resources/output/javac/DoWhile.class create mode 100644 src/test/resources/output/javac/EmptyClass.class create mode 100644 src/test/resources/output/javac/EmptyClassWithConstructor.class create mode 100644 src/test/resources/output/javac/Field.class create mode 100644 src/test/resources/output/javac/FieldWithAccessModifier.class create mode 100644 src/test/resources/output/javac/For.class create mode 100644 src/test/resources/output/javac/If.class create mode 100644 src/test/resources/output/javac/IfElse.class create mode 100644 src/test/resources/output/javac/IfElseIfElse.class create mode 100644 src/test/resources/output/javac/Increment.class create mode 100644 src/test/resources/output/javac/MainMethod.class create mode 100644 src/test/resources/output/javac/MultipleClasses.class create mode 100644 src/test/resources/output/javac/SelfReference.class create mode 100644 src/test/resources/output/javac/ThisDot.class create mode 100644 src/test/resources/output/javac/VariableCalculation.class create mode 100644 src/test/resources/output/javac/VariableCompare.class create mode 100644 src/test/resources/output/javac/VoidMethod.class create mode 100644 src/test/resources/output/javac/While.class diff --git a/src/main/java/ast/type/type/TypeEnum.java b/src/main/java/ast/type/type/TypeEnum.java index 292800c..8c146c8 100644 --- a/src/main/java/ast/type/type/TypeEnum.java +++ b/src/main/java/ast/type/type/TypeEnum.java @@ -4,5 +4,6 @@ public enum TypeEnum { VOID, INT, CHAR, - BOOL + BOOL, + NULL } diff --git a/src/main/java/semantic/SemanticAnalyzer.java b/src/main/java/semantic/SemanticAnalyzer.java index 7e0a57e..3755054 100644 --- a/src/main/java/semantic/SemanticAnalyzer.java +++ b/src/main/java/semantic/SemanticAnalyzer.java @@ -254,6 +254,11 @@ public class SemanticAnalyzer implements SemanticVisitor { return new TypeCheckResult(true, type); } else if (currentScope.getLocalVar(toCheck.identifier) != null) { var type = currentScope.getLocalVar(toCheck.identifier); + MemberAccessNode memberAccessNode = new MemberAccessNode(false); + memberAccessNode.identifiers.add(currentClass.identifier); + memberAccessNode.identifiers.add(toCheck.identifier); + toCheck.memberAccess = memberAccessNode; + toCheck.setTypeNode(type); return new TypeCheckResult(true, type); } } @@ -328,7 +333,16 @@ public class SemanticAnalyzer implements SemanticVisitor { if (toCheck.target != null) { if(toCheck.target.memberAccess == null){ MemberAccessNode memberAccessNode = new MemberAccessNode(false); - memberAccessNode.identifiers.add(currentClass.identifier); + var identifierType = currentFields.get(toCheck.target.identifier); + if(identifierType == null){ + identifierType = currentScope.getLocalVar(toCheck.target.identifier); + } + if(identifierType instanceof ReferenceType referenceType){ + memberAccessNode.identifiers.add(referenceType.getIdentifier()); + } else { + memberAccessNode.identifiers.add(currentClass.identifier); + + } memberAccessNode.identifiers.add(toCheck.target.identifier); toCheck.target.memberAccess = memberAccessNode; } @@ -688,6 +702,9 @@ public class SemanticAnalyzer implements SemanticVisitor { case BOOLEAN_VALUE -> { return new TypeCheckResult(true, new BaseType(TypeEnum.BOOL)); } + case NULL_VALUE -> { + return new TypeCheckResult(true, currentNullType); + } default -> { return new TypeCheckResult(false, null); } diff --git a/src/test/resources/input/combinedFeatureTests/AllFeaturesClassExample.class b/src/test/resources/input/combinedFeatureTests/AllFeaturesClassExample.class new file mode 100644 index 0000000000000000000000000000000000000000..b59adc2b7e01f158236a1ad77e723a9172711fe4 GIT binary patch literal 1093 zcmZ`%O-~b16g{sq(64DJUj=Cq0fn|8uyA3t8nl9Gg0jGnfE!=iNg14Wn(372o zmTd|MNh>RO(!dZ>j4HH!l^HQGiZMo2S}Dd%TFFmPD_7nx<#$!;nt>@*(Qwsidah&d zcy6ca3#qSJ1JnLj+o@YsX>YeoS9+GyYzycmr^X6~wydW4ywj+d?h9E_H6?aDS$+LX zwt`rbwVJ>{u3XNS1tRTE#dD=m^MJ|mopokCN8J|I=tqt|PsKD+#>6}1Q1$O(*NA&x`h?DCgV3Hd5>WCv@FVw`81 zOPXYU3Jb^}Pru5FZxCTXkB_Cp(IIWF&EHgNvm4ZGuc-k>AOQwqQEk3z8|vIi(Dh}W2`d9G7V~vthF-^jG`= zUwl!t1qDCAk5bR1!6M4A_s+d@?>XmQ_Q%h!-vR8R6Tm}3!VghINuYMDPE|KiHty~Z zj`c7XC_OUPrS&$@Pd7>6DDk-b{r_yDu|i^M0ObHQI4-DuN z=bfvf-Cz{))x8JN1w^#^1@a>!flb;46li^(A}S~`%bm>o*61B(G5QSo;ZKVz0*i$k zoYql1C4tMokpHO>nj@CJD(%rd=uI6cR4$2_T5*j=!D3<6--2f20OR zpzu-0+I$koHJXPWitt?c0p<~q-Z_@(fsFM@7D=O%nDj^)qf!CU@kuUO;Y9(b(XrJp zu;ii=U>Vha%zEdiMvdu_WVEbyAKTDL`&+7G(=(}(<6SHFGQbL633x+gx>F)8Z+-)8T_`M`c2kNu7Xt;kUWf-h%BbokHN5H}fx%-Xyk-a>?H zH*hZ*32YHd$Ppbrd3Y#rl|z`;t@CR&^Winzi>DGx0?EQ|lV~kArxt~0^7ak@3luN0 zqK@q;|A4kOv;7OjALYGUEOf6>ZcR{|V6|1=pI~Da&$_Kq2s~*YOFZWaR*7{~Df*u4 HbJ+OR=|(Sh3MEvQIh;9X&i6ZWW`F(p{u96})RKrGYQu67LtG$pPh>=!bG3bvR~?o($S@Bp^-` zNMqSX#>EP0?)XZ~=$w+6mq zn``B(MSTh+o55t%k*}30E-jq=kr@GY*h_@ZE4cVfv{Cx(mG(JzRc1{-S$%-0ZhV9N znLB|!+BDAs7QYx0h%?G7&Fi|XGMb0gudqKN{RK3hnG-MBjm1>u2b@di0Z$sn$^52wX1pk! m^MiXlt#KW4{kzCEIY5qbtF(D+q5u!;Bo+xM5m045f`h-jQ=H!b literal 0 HcmV?d00001 diff --git a/src/test/resources/input/combinedFeatureTests/EmptyClassExample.class b/src/test/resources/input/combinedFeatureTests/EmptyClassExample.class new file mode 100644 index 0000000000000000000000000000000000000000..a6a129d83eb7b7fa699093038b18c5956b9ac7cc GIT binary patch literal 208 zcmX^0Z`VEs1_mbvUM>bE24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00Sb_Nbc20_={f|5$-oW$Z{*NVj4f}B)F1{UZ16d=X#lbM(5SDKrYS`?C) z1d`wi&Mz%WPIb!!al|lm>VYg|P-I{Sx&s6lfe`2tAjt{j$%6R|46It)85lQ$rMZA4 ONE)J)8%Q%T@BjcvAt~Pg literal 0 HcmV?d00001 diff --git a/src/test/resources/input/combinedFeatureTests/LoopExamples.class b/src/test/resources/input/combinedFeatureTests/LoopExamples.class new file mode 100644 index 0000000000000000000000000000000000000000..2a398c6e58dba159bd89b9357647b2657cb08f32 GIT binary patch literal 1004 zcmaJ=L2nX46#fP%3+onI5GtY-D^;jkwBDrgP$IEOt0pwvpX~rul@+n zUOekTlOFs5{uY0MY1FqsA_U?dW@h(&?|a|-=IxK)7vBNwVaG%SQ3EjxONcY9obhvB zbGSUMy=tF{j%JAO+S1m~7^0QxaS{n64VV_Lz?y-#hJh9?q11qqat9+KTh(6sw$v@{ z3+~o4R5N8EjTMG9m-j_O$qv^iw(ij>&|K<(ax44Qar#IH<=XPJZX$!MfvXmB$TMUY z@G}@*Sj~|k$vj2%I0J^1fdYedpp^IgEq6UfP|a9Fbp=EEz?S0Wz-LiRtaF^t5jMg$`f;bo+ JqK3yP`~|8~{Zs$| literal 0 HcmV?d00001 diff --git a/src/test/resources/input/combinedFeatureTests/MethodOverloading.class b/src/test/resources/input/combinedFeatureTests/MethodOverloading.class new file mode 100644 index 0000000000000000000000000000000000000000..2357744da74e54140524878508a87dd6fe8f3e92 GIT binary patch literal 1083 zcmaJ=T~8B16g@+?-L@>>0wM)g1#M}i0)E%{Koeq89(PmmwPA0 zgZi0hD2Bvq$8*#hhFCUtY$C}p^G>K!**rKGzAJgt@lMh(5ldklmWc@qlbE_eRqF*x zw247>iEzFeHgRO}(04plQ@-HslBSrkFpD|D@n(}Do~=}Jm08j`Z(#w842x~v5@qQ% zxccCzQ(6UzdnzE#Y$X@bhT4gfR1xPA?wDA%kiiPW+=#vmW=E@VJxwx9kvrDH*0eC2 zydX)TCIT}UW!V%AQ&q!@A;qEmu79#CFa+Qz< zArgdK8N!-KVI3QN>>-KK!U{iOe!N7g`UB~FJaK{PE8GGua9bA)U0J=NF?8ix=WN(# q97$O8I3|#%#~Q-};v2(5WGPS5>JjzIg)xs^s-@}s37+8vmi_{y1Na&M literal 0 HcmV?d00001 diff --git a/src/test/resources/input/singleFeatureTests/TestClass2.class b/src/test/resources/input/singleFeatureTests/TestClass2.class new file mode 100644 index 0000000000000000000000000000000000000000..85b51363ba1e568002e8b72e1b88048e396b7e0f GIT binary patch literal 199 zcmW+wy9&ZU5S%kH(HPOfR&TmX*2RycDK+(#4t= z^;mD3xtWx1iCyx@eS<4zdHhyb3?zD-TR0*1xQ*cN`84~4WLbZQ=mYKdz2lUak_Ytx dLbMTa=I{UBOLmv-^|wTU(}(PUBAz)0=YLd8Dh&Vt literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/Comments.class b/src/test/resources/output/javac/Comments.class new file mode 100644 index 0000000000000000000000000000000000000000..8d74444c8006241940352d7c5197335aab576a17 GIT binary patch literal 206 zcmXv|I|{;35S-25m>4f0SgM7&fLIt11kpmVe~AxyAs>i|_p%Z!Jb;H1HxY}S*_mOP zeSe-W04oG8H0U-A4<;)+`#6G!Jh_MH^+tB{OPM_6?nV8Ml R19b0VkFkw^=rd~=d;y@sBZvS1 literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/ConstructorMethodCall.class b/src/test/resources/output/javac/ConstructorMethodCall.class new file mode 100644 index 0000000000000000000000000000000000000000..009c42373cb5456168563ddc4036ca8f43968486 GIT binary patch literal 327 zcmZusyH3ME5S+E0m>ib}k2LA%z!KyKPzo#|MdDF_=+Djx92r}3&U_UO1t3xI0elo< z&QMb9+|J(4+|Aeb$0vX@OcerzF(Qo~`hv;YJehfEs{8qMwzjzw^iPYba0@|rcyy<* zg+UCZu?;PlrggP(O`E&AxwP(~UZtii1$ m=>)sP5kg`Q5d|7CdxrXx&Ukv;AbKVW{JysZ6mierVE+exEH=pi literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/ConstructorMethodCallParameters.class b/src/test/resources/output/javac/ConstructorMethodCallParameters.class new file mode 100644 index 0000000000000000000000000000000000000000..6c01775e5811edc75a952be0e4de8cb02bcaae7f GIT binary patch literal 356 zcmah^yH3ME5S+Cgn;ec4o&_nOph#RKKY%E(gk*`A1WJE)PTAu4YK(4kQ|nu0Ug~)w%kn{Lxl~5!h9Hb;%vK_Jqja2h`9u_=j{$)s zN4gbeOi4Xgg#JxYsk?TWDg7j~k~`wDZgsA%3tOE3V>+=v;EZh?{*gG?i_zh{gFVK5 zt|o9ddK9lfaXkD)@PXd@X5)Y{VjVp1!AB1P=lt>C?g_KK?F`=-33lFR1_a}wRdDnR D!^=R8 literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/ConstructorParameter.class b/src/test/resources/output/javac/ConstructorParameter.class new file mode 100644 index 0000000000000000000000000000000000000000..eabb195ade30d8262acbc7736868b9210682e4a3 GIT binary patch literal 226 zcmZusI|{-;5Pf5^Mq~UGHg?(>3%!6?CqFP1Pc$~p~OjQ=P~o< z&A@y<-`5+!94#LeI3C;p0#!oiBJXmN$n-qfMi&)ZLUpQBZD#~$7#=;;2;D`N-mJ-E zo0*+7@~W&d1TkE#!Xv?5WG6*vuXU<6`887JAftpU{yxi1td_bEy?;Z-#d`GN@l}Np eL!i#lXEk7Un8oM`dX()3$KnOBy9`25=FJ~72QDiB literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/ConstructorThisDot.class b/src/test/resources/output/javac/ConstructorThisDot.class new file mode 100644 index 0000000000000000000000000000000000000000..1a1c4c38599720fe9b6c9abdea71dad319ee7e12 GIT binary patch literal 256 zcmZWj%MQU%5IxgYt5wg9g^eX$@B?CjNSX)>Vt-pVT%k9q)_+-u#KH&oC^5CQm@{+E zyw3acd;yrC<-vgI!17UoO=uj&RSZue*$-FIQN|g;9;rlSV}jZ1Z(Wq(I`Di{;1gO? zom{dsk29Ta4(c+~yg-5@Bv`$$zvVR5J4vW7R3ex8Ig;r{L?>3fwa(L6&Q(F$|Ca`Z y7j*ff!Cr}xfBq_BvsG4V%mUVnz85?|LFW$V_M53Q)?hN0V8Mn9hc_C`4K%-pd@f=D literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/DoWhile.class b/src/test/resources/output/javac/DoWhile.class new file mode 100644 index 0000000000000000000000000000000000000000..d7f8c194c4d92b228c0fd34d35d1e3abd3d67c37 GIT binary patch literal 250 zcmXYrJ#NB45QX2^#tV)OuF}v@28wV2l!8Pw{1uL%UOOu=0UIHc6L1lZkP0b94v-^J z1fCH)(i^>R=k3nl|IaUgKI$GU*b0u13S2?B(qFo}*4d&vjaMcq1a2?Q(&9y6KecBH zRe^fT=gV|$1kP*z!PXe1nVIZ2vDv-rxV#9WLMNYNy}f%c%J;j(3~nj^o_{VsLko&K zlt)bE24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00Sb_Nbc1}@j!f|5$-oW$Z{Mg|t={FGEi27aH+yi~u^+@#c^ki?`Mpa@rR zerZv1s#_+A!;jFS2eN`efq@-pGYBvOG0<)x%?V`50%@>_)^-NQjbLdmAPJHNDP?5f J2GUFnJOHXMBsTy6 literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/EmptyClassWithConstructor.class b/src/test/resources/output/javac/EmptyClassWithConstructor.class new file mode 100644 index 0000000000000000000000000000000000000000..664bf33beed4dcaa368c76f472c1260ce5efbe9a GIT binary patch literal 228 zcmZ`!!4APt5S-Ogig0z2^o9dJAPyQ%!hvvptruQXt-QWUe3p~M!3X##vF+VXcCxdR zY-T^-*BihbZ5I_-4(t}Hs1dr6xQR(DlG9`pL^3pl+EgXV%m~(CxOY$|^cI(^x%;um zvV$^bKTR^D^U$Q4VEgG&5;`lD$aQ`Rq~3`j=8d~ea~;a1Dn$S9g>ex89vse96frm% bbAy#vYM?rLf*z&qG8a#P+h!1&<=pxK$pSF# literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/Field.class b/src/test/resources/output/javac/Field.class new file mode 100644 index 0000000000000000000000000000000000000000..e06f2cf103c1789c64fb00719460e1234458f36d GIT binary patch literal 200 zcmXX=I|{;35S-2LX^h4T2$pJLE+7^P0YS7->|c_Hybu!ziTAP+EIfdR688m*+1Z(4 z*!_H8ZvY#FJ}lS*P5>7kVVujmj0#y^qhpe*v>|vaUFv2{uxIm&K#$O(B2YNpJh_8JVB2x O4tSc_ln6s+3!@+I=peTM literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/FieldWithAccessModifier.class b/src/test/resources/output/javac/FieldWithAccessModifier.class new file mode 100644 index 0000000000000000000000000000000000000000..a322f456660163581e52d48955bdb5799b09bb7f GIT binary patch literal 236 zcmZ{e%?`m(5QWd6N|oB#u&~2IUqB>Cnn?UC2nNDeP$bj?aS?VXqP@Lz1L>uN;y^_z9TM`L?nXz6&~TIt{jEw5 zBhQnk(>(UoPRWEof@?}BOk!UWteJ}B;(T;vvKDU07h@Hl6HhuS6U{$4{R{$a=*$Li gBFZp+8&k5buxfoAKP5}ZIDWP2mSReS0N%1a2@jvx9-m!Q`h3jvdpK@<~= zeza7C(#Q|hWWRM)JeTfPH`$D1B-Kh3XtOW$;?ajE6q(xEec6Y$^nY-2A3ozXZt1= zK>1w3`K3k4scxAdNp6UCJ&;uliVW;P7k~gG5CYu*Bsqb+P@pJCTvTg210#oxG{*u4 z&KAc1%Nf{O7#TMLC72kvfTR>q1BlJSzzk%uFmMBn5Cj@20yKmhD8t9V^dBg|#LmFZ N2vWz$zyns#3jlwFD`Wrw literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/IfElseIfElse.class b/src/test/resources/output/javac/IfElseIfElse.class new file mode 100644 index 0000000000000000000000000000000000000000..680b310cab6113151f97dcd998d86843760f9889 GIT binary patch literal 290 zcmYjL%TB^j6r9u6-cpLtjT=l*SL#B3fVhA_V&Y?gVSih%=3*@d3tzy8xMS_g#04MV zM+wvF!h4g+oH^&robR8n4S+uOLpX31ya;>n1+A%G>TagEfYI ex0vjJ35WFTP^ojG33tneqo4!`9R^0#Vq*u~{xWO; literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/Increment.class b/src/test/resources/output/javac/Increment.class new file mode 100644 index 0000000000000000000000000000000000000000..75faed58501bcdc4dc2deeb3a0cbc606d5fd7aaa GIT binary patch literal 350 zcmYjL%Syvg6r6LLHo0lq#s{LP3wLc7_6M{J1tH)ID%~gXBB^aEHT4VnCoWvO5W$5X z;QzQ0QRmhoa^al0=ggd$x38C100&t0p-^(+1Sq2-2nX?9+!@CCRp%@jn6wa7_Od)H zx`I-()z|Q#UHAd22n0IH(}@|GoIIy6w`>v-9*!@KpmCh#=5#tr%;X|YhMef^AHNy3 z`hr@oh|}wn_+~-zd*kUOHAk7{*Z=PC+F;nBy<%|M*Z@R|h{;)N{B6%SK)L-4d7KmL ztakk?Y9L%t&na~{-Dq#lM4sR}`&*%ZkE++5DS7yQw{it5U!#LP;_-#hSY}_R{}QJf O>Jz?v&|bK(l9eBg(mC${ literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/MainMethod.class b/src/test/resources/output/javac/MainMethod.class new file mode 100644 index 0000000000000000000000000000000000000000..0470c083d8f0041792c4ae9f2158848bbefb809e GIT binary patch literal 265 zcmZ9Gy$ZrW5QJw<+UZ!@S;)Cx9vZ8cMJn*dEHL5L!oZ72!$feYlQ~GARg^vC^uT5UijdIj9n9OQG~q z7Kbb)*t0B^1b?BlTwTtw%(o&wv16Z^BD90u;upFpa;5j9e#9x8?2;#Pt_WjK!DZFuOU4=8K{pm0#M``$c2S4-y+G&du=|hM3^e#zLh}QtM=oyw literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/MultipleClasses.class b/src/test/resources/output/javac/MultipleClasses.class new file mode 100644 index 0000000000000000000000000000000000000000..4585bf0309a0781a1a7b4e841df2df39cb83717c GIT binary patch literal 204 zcmX^0Z`VEs1_mbvUM>bE24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00Sb_Nbc27cetoRZ9foK)wW#Ny)AVnzlQ=lqmZpoC9mUaDVdZc=JdNMceB zP=qTuzqBYh)h!dm5kb?Z2eOPofq@<91`uEbVxTL4G$)WH3#7p!TH6^IH-e?PfFwv7 Oq?D0?8%Q%T@BjcwkSJ>a literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/SelfReference.class b/src/test/resources/output/javac/SelfReference.class new file mode 100644 index 0000000000000000000000000000000000000000..45103e5f16c2679d029ec91f60629b6946885607 GIT binary patch literal 453 zcmZ8eO-sW-5Ph4ZNllZc)=vb%qgAk|N5zAJAVdW#g2yDCYD!EXP5o6~ytJU;5Aa8c zGb-x#FdsYf-rJeo_m7u10LNH$VZd}?d8olwXbq#ssGCLkUH38`Qc@|{hiRTxM+)X< z=f*`Ha}Hb&4R{KEkFvoP4XC6%A%#Xoqw1Wh`=Y=1MK}|JDK7BP63RcwE(?rwfgscr z4-~AEqR+}fnC5gbeu$~Oj^a$eYhS_b72`6Y(^Oh*O=L%Q!UoS^@Xm^D9&Pp(8!ye3 z1hVUfMGzezkj=Q?x(=V=CN^O@h~2fD^l1Pp5y=W=!F7uVt0WIF#9 Z_1h`@aC?I0A4Pr%Xv#CP+_DH_OjL$MX#H-|_b_Jm^)Tu5;1hd!QI%vWXa6Po(5ya-G zuhWcGBst~;Ym)61Az0{CEz3)y@{LT++;P`gneWt0SH!FL2Gu!q+0@{7*rBqmEB=Rh in_0wD;_OCGP-HzI?thKX=)+{RVX@kQU|qo6K==cXSR>{D literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/VariableCalculation.class b/src/test/resources/output/javac/VariableCalculation.class new file mode 100644 index 0000000000000000000000000000000000000000..131a2e6b75de3abf21e6521ad4ab0cea94218e30 GIT binary patch literal 723 zcmZ{g%TB^j5QhH)g>qFCFC^52CA!cTFvftFka$ZVEL=I16Fqt;T3h1d7-QnbjVluu zK7bEpoI_9%OOtk{GvEK8IrH)P_70$iQU)=^ZCE)ZkQ69f(ttKJdFLC)olEHk0?AF~ zsbEVWUR`b5NC_0%|FJ=nre=?{mj1W+R3P6B$h|tG>ydk!_I*jg zkV(<*O-S0Dm1*`v-<5mHOi+p#c-`C-71+E0^Q8IZ6@X9WY=xsRm9^Lu&pOpabq7FTSEy&t|SmkZ<~!QL}?$VXq~^>#VGCl6m4Z( KE3h;iYxxUZeqFBs literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/VariableCompare.class b/src/test/resources/output/javac/VariableCompare.class new file mode 100644 index 0000000000000000000000000000000000000000..bf2b598420363d648239a9e90f5d6f4454e81cd4 GIT binary patch literal 620 zcma*j!A^rf5C-6X3zkYzXp4z4ns`(X_63ZIHt9*_VAF%QrL0Or!K~1y^5V(FgAd?C z8E1&m(!EFmv&?=wv%8;P?;ijzvE!lz%Yp4-18sp|E|+qc$^2m$#d9?)1=?q6o|fkV z*3t3QK}W!!N}b9$Q=?+>B()N-M@2%xze;m;Q!QepCp<6Umby~cs(dVxy1<=4_g-et zzquZRi#(aExc*OWyb1^PGLnsKz%1_@_uHK4PZ+@F0J?PN2p}{W^?8zJ c#y8NF0UzS7WsQN>*V_9qe>Q`SE{g`*Z_&Oc*8l(j literal 0 HcmV?d00001 diff --git a/src/test/resources/output/javac/While.class b/src/test/resources/output/javac/While.class new file mode 100644 index 0000000000000000000000000000000000000000..3fbdb4f503cb162e7e0a86cadb65fd33720b2cb8 GIT binary patch literal 249 zcmX^0Z`VEs1_mbvJ}w3(24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00Sb_Nbc2G;P5%$!t41{UZ16d=X#lbM(5SDKrYS`?C)1d`wlE=f$z_Dw8+ z^0|WZON)|I-N3rIz`FH77BMI=umkM}0Y)GMx&TOW0(pKw8YC{HwVi=cfXhaD9s_3! z$1_ovZ79eB?>f{EJf