add Fields Test. Felder können ohne Typ oder mit var-Keyword initialisiert werden

This commit is contained in:
JanUlrich 2018-08-24 18:25:34 +02:00
parent 1061f355ff
commit df95c244bf
7 changed files with 50 additions and 34 deletions

View File

@ -23,7 +23,7 @@ public class StatementGenerator {
private JavaClassRegistry reg;
private Map<String, RefTypeOrTPHOrWildcardOrGeneric> localVars;
private GenericsRegistry generics;
private String VAR_KEYWORD = "var";
public static final String VAR_KEYWORD = "var";
public StatementGenerator(JavaClassRegistry reg, GenericsRegistry generics, Map<String, RefTypeOrTPHOrWildcardOrGeneric> localVars){
this.reg = reg;

View File

@ -310,8 +310,9 @@ public class SyntaxTreeGenerator{
modifiers+=(convert(fieldModifierContext));
}
RefTypeOrTPHOrWildcardOrGeneric fieldType;
if(fieldDeclarationContext.unannType() != null){
fieldType = TypeGenerator.convert(fieldDeclarationContext.unannType(), reg, generics);
if(fieldDeclarationContext.unannTypeOrAuto() != null
&& fieldDeclarationContext.unannTypeOrAuto().unannType().getText().equals(StatementGenerator.VAR_KEYWORD)){
fieldType = TypeGenerator.convert(fieldDeclarationContext.unannTypeOrAuto().unannType(), reg, generics);
}else{
fieldType = TypePlaceholder.fresh(fieldDeclarationContext.getStart());
}

View File

@ -333,7 +333,7 @@ classMemberDeclaration
;
fieldDeclaration
: fieldModifier* unannType? variableDeclaratorList ';'
: fieldModifier* unannTypeOrAuto? variableDeclaratorList ';'
;
fieldModifier

View File

@ -3526,8 +3526,8 @@ public class Java8Parser extends Parser {
public FieldModifierContext fieldModifier(int i) {
return getRuleContext(FieldModifierContext.class,i);
}
public UnannTypeContext unannType() {
return getRuleContext(UnannTypeContext.class,0);
public UnannTypeOrAutoContext unannTypeOrAuto() {
return getRuleContext(UnannTypeOrAutoContext.class,0);
}
public FieldDeclarationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
@ -3570,7 +3570,7 @@ public class Java8Parser extends Parser {
case 1:
{
setState(878);
unannType();
unannTypeOrAuto();
}
break;
}
@ -18008,33 +18008,33 @@ public class Java8Parser extends Parser {
"\u0365\3\2\2\2\u0368\u0366\3\2\2\2\u0368\u0367\3\2\2\2\u0369i\3\2\2\2"+
"\u036a\u036c\5l\67\2\u036b\u036a\3\2\2\2\u036c\u036f\3\2\2\2\u036d\u036b"+
"\3\2\2\2\u036d\u036e\3\2\2\2\u036e\u0371\3\2\2\2\u036f\u036d\3\2\2\2\u0370"+
"\u0372\5v<\2\u0371\u0370\3\2\2\2\u0371\u0372\3\2\2\2\u0372\u0373\3\2\2"+
"\2\u0373\u0374\5n8\2\u0374\u0375\7A\2\2\u0375k\3\2\2\2\u0376\u037f\5\u00e8"+
"u\2\u0377\u037f\7%\2\2\u0378\u037f\7$\2\2\u0379\u037f\7#\2\2\u037a\u037f"+
"\7(\2\2\u037b\u037f\7\24\2\2\u037c\u037f\7\60\2\2\u037d\u037f\7\63\2\2"+
"\u037e\u0376\3\2\2\2\u037e\u0377\3\2\2\2\u037e\u0378\3\2\2\2\u037e\u0379"+
"\3\2\2\2\u037e\u037a\3\2\2\2\u037e\u037b\3\2\2\2\u037e\u037c\3\2\2\2\u037e"+
"\u037d\3\2\2\2\u037fm\3\2\2\2\u0380\u0385\5p9\2\u0381\u0382\7B\2\2\u0382"+
"\u0384\5p9\2\u0383\u0381\3\2\2\2\u0384\u0387\3\2\2\2\u0385\u0383\3\2\2"+
"\2\u0385\u0386\3\2\2\2\u0386o\3\2\2\2\u0387\u0385\3\2\2\2\u0388\u038b"+
"\5r:\2\u0389\u038a\7D\2\2\u038a\u038c\5t;\2\u038b\u0389\3\2\2\2\u038b"+
"\u038c\3\2\2\2\u038cq\3\2\2\2\u038d\u038f\7h\2\2\u038e\u0390\5\"\22\2"+
"\u038f\u038e\3\2\2\2\u038f\u0390\3\2\2\2\u0390s\3\2\2\2\u0391\u0394\5"+
"\u01a2\u00d2\2\u0392\u0394\5\u00fa~\2\u0393\u0391\3\2\2\2\u0393\u0392"+
"\3\2\2\2\u0394u\3\2\2\2\u0395\u0398\5x=\2\u0396\u0398\5z>\2\u0397\u0395"+
"\3\2\2\2\u0397\u0396\3\2\2\2\u0398w\3\2\2\2\u0399\u039c\5\b\5\2\u039a"+
"\u039c\7\5\2\2\u039b\u0399\3\2\2\2\u039b\u039a\3\2\2\2\u039cy\3\2\2\2"+
"\u039d\u03a1\5|?\2\u039e\u03a1\5\u008aF\2\u039f\u03a1\5\u008cG\2\u03a0"+
"\u039d\3\2\2\2\u03a0\u039e\3\2\2\2\u03a0\u039f\3\2\2\2\u03a1{\3\2\2\2"+
"\u03a2\u03a5\5\u0082B\2\u03a3\u03a5\5\u0088E\2\u03a4\u03a2\3\2\2\2\u03a4"+
"\u03a3\3\2\2\2\u03a5\u03aa\3\2\2\2\u03a6\u03a9\5\u0080A\2\u03a7\u03a9"+
"\5\u0086D\2\u03a8\u03a6\3\2\2\2\u03a8\u03a7\3\2\2\2\u03a9\u03ac\3\2\2"+
"\2\u03aa\u03a8\3\2\2\2\u03aa\u03ab\3\2\2\2\u03ab}\3\2\2\2\u03ac\u03aa"+
"\3\2\2\2\u03ad\u03af\7h\2\2\u03ae\u03b0\5,\27\2\u03af\u03ae\3\2\2\2\u03af"+
"\u03b0\3\2\2\2\u03b0\u03be\3\2\2\2\u03b1\u03b2\5|?\2\u03b2\u03b6\7C\2"+
"\2\u03b3\u03b5\5\u00e8u\2\u03b4\u03b3\3\2\2\2\u03b5\u03b8\3\2\2\2\u03b6"+
"\u03b4\3\2\2\2\u03b6\u03b7\3\2\2\2\u03b7\u03b9\3\2\2\2\u03b8\u03b6\3\2"+
"\2\2\u03b9\u03bb\7h\2\2\u03ba\u03bc\5,\27\2\u03bb\u03ba\3\2\2\2\u03bb"+
"\u0372\5\u0106\u0084\2\u0371\u0370\3\2\2\2\u0371\u0372\3\2\2\2\u0372\u0373"+
"\3\2\2\2\u0373\u0374\5n8\2\u0374\u0375\7A\2\2\u0375k\3\2\2\2\u0376\u037f"+
"\5\u00e8u\2\u0377\u037f\7%\2\2\u0378\u037f\7$\2\2\u0379\u037f\7#\2\2\u037a"+
"\u037f\7(\2\2\u037b\u037f\7\24\2\2\u037c\u037f\7\60\2\2\u037d\u037f\7"+
"\63\2\2\u037e\u0376\3\2\2\2\u037e\u0377\3\2\2\2\u037e\u0378\3\2\2\2\u037e"+
"\u0379\3\2\2\2\u037e\u037a\3\2\2\2\u037e\u037b\3\2\2\2\u037e\u037c\3\2"+
"\2\2\u037e\u037d\3\2\2\2\u037fm\3\2\2\2\u0380\u0385\5p9\2\u0381\u0382"+
"\7B\2\2\u0382\u0384\5p9\2\u0383\u0381\3\2\2\2\u0384\u0387\3\2\2\2\u0385"+
"\u0383\3\2\2\2\u0385\u0386\3\2\2\2\u0386o\3\2\2\2\u0387\u0385\3\2\2\2"+
"\u0388\u038b\5r:\2\u0389\u038a\7D\2\2\u038a\u038c\5t;\2\u038b\u0389\3"+
"\2\2\2\u038b\u038c\3\2\2\2\u038cq\3\2\2\2\u038d\u038f\7h\2\2\u038e\u0390"+
"\5\"\22\2\u038f\u038e\3\2\2\2\u038f\u0390\3\2\2\2\u0390s\3\2\2\2\u0391"+
"\u0394\5\u01a2\u00d2\2\u0392\u0394\5\u00fa~\2\u0393\u0391\3\2\2\2\u0393"+
"\u0392\3\2\2\2\u0394u\3\2\2\2\u0395\u0398\5x=\2\u0396\u0398\5z>\2\u0397"+
"\u0395\3\2\2\2\u0397\u0396\3\2\2\2\u0398w\3\2\2\2\u0399\u039c\5\b\5\2"+
"\u039a\u039c\7\5\2\2\u039b\u0399\3\2\2\2\u039b\u039a\3\2\2\2\u039cy\3"+
"\2\2\2\u039d\u03a1\5|?\2\u039e\u03a1\5\u008aF\2\u039f\u03a1\5\u008cG\2"+
"\u03a0\u039d\3\2\2\2\u03a0\u039e\3\2\2\2\u03a0\u039f\3\2\2\2\u03a1{\3"+
"\2\2\2\u03a2\u03a5\5\u0082B\2\u03a3\u03a5\5\u0088E\2\u03a4\u03a2\3\2\2"+
"\2\u03a4\u03a3\3\2\2\2\u03a5\u03aa\3\2\2\2\u03a6\u03a9\5\u0080A\2\u03a7"+
"\u03a9\5\u0086D\2\u03a8\u03a6\3\2\2\2\u03a8\u03a7\3\2\2\2\u03a9\u03ac"+
"\3\2\2\2\u03aa\u03a8\3\2\2\2\u03aa\u03ab\3\2\2\2\u03ab}\3\2\2\2\u03ac"+
"\u03aa\3\2\2\2\u03ad\u03af\7h\2\2\u03ae\u03b0\5,\27\2\u03af\u03ae\3\2"+
"\2\2\u03af\u03b0\3\2\2\2\u03b0\u03be\3\2\2\2\u03b1\u03b2\5|?\2\u03b2\u03b6"+
"\7C\2\2\u03b3\u03b5\5\u00e8u\2\u03b4\u03b3\3\2\2\2\u03b5\u03b8\3\2\2\2"+
"\u03b6\u03b4\3\2\2\2\u03b6\u03b7\3\2\2\2\u03b7\u03b9\3\2\2\2\u03b8\u03b6"+
"\3\2\2\2\u03b9\u03bb\7h\2\2\u03ba\u03bc\5,\27\2\u03bb\u03ba\3\2\2\2\u03bb"+
"\u03bc\3\2\2\2\u03bc\u03be\3\2\2\2\u03bd\u03ad\3\2\2\2\u03bd\u03b1\3\2"+
"\2\2\u03be\177\3\2\2\2\u03bf\u03c3\7C\2\2\u03c0\u03c2\5\u00e8u\2\u03c1"+
"\u03c0\3\2\2\2\u03c2\u03c5\3\2\2\2\u03c3\u03c1\3\2\2\2\u03c3\u03c4\3\2"+

11
test/javFiles/Fields.jav Normal file
View File

@ -0,0 +1,11 @@
import java.lang.String;
class Fields{
String test2 = "test";
test;
m(){
var test3;
return test;
}
}

View File

@ -85,6 +85,10 @@ public class JavaTXCompilerTest {
public void addLong() throws IOException, ClassNotFoundException {
execute(new File(rootDirectory+"AddLong.jav"));
}
@Test
public void fields() throws IOException, ClassNotFoundException {
execute(new File(rootDirectory+"Fields.jav"));
}
private static class TestResultSet{