ClassCast-Exception beim Id-Beispiel #6

Closed
opened 2015-11-02 17:49:36 +00:00 by pl · 4 comments
Owner

Bei folgendendem Beispiel

class Id {
<GPM, FNF extends GPM> Fun1<? extends GPM, ? super FNF> op = (x) -> x;

}

erhält man folgenden Fehler:

java.lang.ClassCastException: de.dhbwstuttgart.syntaxtree.type.ExtendsWildcardType cannot be cast to de.dhbwstuttgart.syntaxtree.type.RefType
Es ist ein Fehler aufgetreten:
Fehler beim Parsen und Inferieren

Bei folgendendem Beispiel class Id { <GPM, FNF extends GPM> Fun1<? extends GPM, ? super FNF> op = (x) -> x; } erhält man folgenden Fehler: java.lang.ClassCastException: de.dhbwstuttgart.syntaxtree.type.ExtendsWildcardType cannot be cast to de.dhbwstuttgart.syntaxtree.type.RefType Es ist ein Fehler aufgetreten: Fehler beim Parsen und Inferieren
Owner

Fehler tritt bei Bytecode auf.

java.lang.ClassCastException: de.dhbwstuttgart.syntaxtree.type.ExtendsWildcardType cannot be cast to de.dhbwstuttgart.syntaxtree.type.RefType
at de.dhbwstuttgart.syntaxtree.type.RefType.getCombinedType(RefType.java:872)
at de.dhbwstuttgart.syntaxtree.type.RefType.getBytecodeType(RefType.java:824)
at de.dhbwstuttgart.syntaxtree.FieldDeclaration.genByteCode(FieldDeclaration.java:175)
at de.dhbwstuttgart.syntaxtree.Class.genByteCode(Class.java:113)
at de.dhbwstuttgart.typeinference.TypeinferenceResultSet.codegen(TypeinferenceResultSet.java:122)
at typinferenzplugin.Typinferenz.run(Typinferenz.java:58)
at typinferenzplugin.editor.JavEditor.typeReconstruction(JavEditor.java:111)
at typinferenzplugin.editor.JavEditor.doSave(JavEditor.java:96)
at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.doSave(AbstractTextEditor.java:7209)
at org.eclipse.ui.Saveable.doSave(Saveable.java:216)

Fehler tritt bei Bytecode auf. java.lang.ClassCastException: de.dhbwstuttgart.syntaxtree.type.ExtendsWildcardType cannot be cast to de.dhbwstuttgart.syntaxtree.type.RefType at de.dhbwstuttgart.syntaxtree.type.RefType.getCombinedType(RefType.java:872) at de.dhbwstuttgart.syntaxtree.type.RefType.getBytecodeType(RefType.java:824) at de.dhbwstuttgart.syntaxtree.FieldDeclaration.genByteCode(FieldDeclaration.java:175) at de.dhbwstuttgart.syntaxtree.Class.genByteCode(Class.java:113) at de.dhbwstuttgart.typeinference.TypeinferenceResultSet.codegen(TypeinferenceResultSet.java:122) at typinferenzplugin.Typinferenz.run(Typinferenz.java:58) at typinferenzplugin.editor.JavEditor.typeReconstruction(JavEditor.java:111) at typinferenzplugin.editor.JavEditor.doSave(JavEditor.java:96) at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.doSave(AbstractTextEditor.java:7209) at org.eclipse.ui.Saveable.doSave(Saveable.java:216)

Test: IdentityFieldTest umgesetzt

Trace:

java.lang.NullPointerException
at de.dhbwstuttgart.syntaxtree.type.RefType.getCombinedType(RefType.java:862)
at de.dhbwstuttgart.syntaxtree.type.RefType.getBytecodeType(RefType.java:827)
at de.dhbwstuttgart.syntaxtree.FieldDeclaration.genByteCode(FieldDeclaration.java:176)
at de.dhbwstuttgart.syntaxtree.Class.genByteCode(Class.java:115)
at de.dhbwstuttgart.syntaxtree.SourceFile.generateBytecode(SourceFile.java:1746)
at de.dhbwstuttgart.core.MyCompiler.generateBytecode(MyCompiler.java:326)
at bytecode.SingleClassTester.compileToBytecode(SingleClassTester.java:38)
at bytecode.IdentityFieldTest.test(IdentityFieldTest.java:12)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:71)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

Test: IdentityFieldTest umgesetzt Trace: java.lang.NullPointerException at de.dhbwstuttgart.syntaxtree.type.RefType.getCombinedType(RefType.java:862) at de.dhbwstuttgart.syntaxtree.type.RefType.getBytecodeType(RefType.java:827) at de.dhbwstuttgart.syntaxtree.FieldDeclaration.genByteCode(FieldDeclaration.java:176) at de.dhbwstuttgart.syntaxtree.Class.genByteCode(Class.java:115) at de.dhbwstuttgart.syntaxtree.SourceFile.generateBytecode(SourceFile.java:1746) at de.dhbwstuttgart.core.MyCompiler.generateBytecode(MyCompiler.java:326) at bytecode.SingleClassTester.compileToBytecode(SingleClassTester.java:38) at bytecode.IdentityFieldTest.test(IdentityFieldTest.java:12) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99) at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81) at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34) at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75) at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45) at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:71) at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35) at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42) at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34) at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

Fehler triff auf, da beim GenericTypeVar die Methode getBytecodeType nicht implementiert ist.

Fehler triff auf, da beim GenericTypeVar die Methode getBytecodeType nicht implementiert ist.
Owner

OLD BUG

OLD BUG
Sign in to join this conversation.
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: JavaTX/JavaCompilerCore#6
No description provided.