'finally' without 'try' in generated Java code
Consider this program: https://pseuco.com/#/edit/remote/303y0vuwm169kojeo0vo
In PseuCoCo 110a895457cf99e0efc8f8056361fad0b51c0bac
, the compiler generates invalid code and consequently crashes:
.\.\include\PseuCo_ChaosBuffer.java:71: error: 'finally' without 'try'
}finally{
^
.\.\include\PseuCo_ChaosBuffer.java:47: error: 'try' without 'catch', 'finally' or resource declarations
try{
^
.\.\include\PseuCo_ChaosBuffer.java:105: error: 'finally' without 'try'
}finally{
^
.\.\include\PseuCo_ChaosBuffer.java:89: error: 'try' without 'catch', 'finally' or resource declarations
try{
^
.\.\include\PseuCo_ChaosBuffer.java:120: error: illegal start of type
}finally{
^
.\.\include\PseuCo_ChaosBuffer.java:120: error: ';' expected
}finally{
^
.\.\include\PseuCo_ChaosBuffer.java:121: error: <identifier> expected
l.unlock();
^
.\.\include\PseuCo_ChaosBuffer.java:123: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:124: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:125: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:126: error: class, interface, or enum expected
return true;
^
.\.\include\PseuCo_ChaosBuffer.java:127: error: class, interface, or enum expected
}
^
.\.\include\PseuCo_ChaosBuffer.java:128: error: class, interface, or enum expected
public int PseuCo_removeElement(){
^
.\.\include\PseuCo_ChaosBuffer.java:130: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:131: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:132: error: class, interface, or enum expected
l.lock();
^
.\.\include\PseuCo_ChaosBuffer.java:133: error: class, interface, or enum expected
try{
^
.\.\include\PseuCo_ChaosBuffer.java:135: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:136: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:137: error: class, interface, or enum expected
{
^
.\.\include\PseuCo_ChaosBuffer.java:139: error: class, interface, or enum expected
boolean cond6 = i < 4;
^
.\.\include\PseuCo_ChaosBuffer.java:140: error: class, interface, or enum expected
while(cond6){
^
.\.\include\PseuCo_ChaosBuffer.java:142: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:143: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:144: error: class, interface, or enum expected
{boolean cond5 = buffer[i] != -1;
^
.\.\include\PseuCo_ChaosBuffer.java:145: error: class, interface, or enum expected
if (cond5) {
^
.\.\include\PseuCo_ChaosBuffer.java:147: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:148: error: class, interface, or enum expected
Simulate.HWInterrupt();int element = buffer[i];
^
.\.\include\PseuCo_ChaosBuffer.java:148: error: class, interface, or enum expected
Simulate.HWInterrupt();int element = buffer[i];
^
.\.\include\PseuCo_ChaosBuffer.java:149: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:150: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:151: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:152: error: class, interface, or enum expected
buffer[i] = -1;
^
.\.\include\PseuCo_ChaosBuffer.java:153: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:154: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:155: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:156: error: class, interface, or enum expected
currentSize--;
^
.\.\include\PseuCo_ChaosBuffer.java:157: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:158: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:159: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:160: error: class, interface, or enum expected
}finally{
^
.\.\include\PseuCo_ChaosBuffer.java:162: error: class, interface, or enum expected
}
^
.\.\include\PseuCo_ChaosBuffer.java:164: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:165: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:166: error: class, interface, or enum expected
return element;
^
.\.\include\PseuCo_ChaosBuffer.java:167: error: class, interface, or enum expected
}}
^
.\.\include\PseuCo_ChaosBuffer.java:169: error: class, interface, or enum expected
cond6 = i < 4;
^
.\.\include\PseuCo_ChaosBuffer.java:170: error: class, interface, or enum expected
}
^
.\.\include\PseuCo_ChaosBuffer.java:173: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:174: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:175: error: class, interface, or enum expected
}finally{
^
.\.\include\PseuCo_ChaosBuffer.java:177: error: class, interface, or enum expected
}
^
.\.\include\PseuCo_ChaosBuffer.java:179: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:180: error: class, interface, or enum expected
Simulate.HWInterrupt();
^
.\.\include\PseuCo_ChaosBuffer.java:181: error: class, interface, or enum expected
return -1;
^
.\.\include\PseuCo_ChaosBuffer.java:182: error: class, interface, or enum expected
}
^
.\.\include\PseuCo_ChaosBuffer.java:121: error: package l does not exist
l.unlock();
^
.\.\include\PseuCo_ChaosBuffer.java:40: error: cannot find symbol
return PseuCo_removeElement();
^
symbol: method PseuCo_removeElement()
location: class PseuCo_ChaosBuffer
58 errors
Exception in thread "main" java.lang.Exception: java.lang.ClassNotFoundException: include.Main
at main.PseuCoCo.startCodeGenerationAndExecutionProcess(PseuCoCo.java:282)
at main.PseuCoCo.main(PseuCoCo.java:211)
Caused by: java.lang.ClassNotFoundException: include.Main
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at main.PseuCoCo.startCodeGenerationAndExecutionProcess(PseuCoCo.java:270)
... 1 more
Reference: https://np17.pseuco.com/t/bug-pseucoco-aufgabe-tf-12/340?u=felix.freiberger