eclipse-jdtls / eclipse-jdt-core-incubator

Eclipse Public License 2.0
8 stars 1 forks source link

[javac] Stackoverflow in type bindings #426

Open fbricon opened 3 months ago

fbricon commented 3 months ago

Running jdt.ls tests against this fork's dom-with-javac branch, a number of tests are failing with StackOverflow errors:

ExtractFieldTest.testExtractToField_lambdaExpression:

01:20:31 org.eclipse.jdt.ls.core.internal.refactoring.ExtractFieldTest.testExtractToField_lambdaExpression -- Time elapsed: 1.202 s <<< ERROR!
01:20:31 java.lang.StackOverflowError
01:20:31    at java.base/java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:246)
01:20:31    at java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:590)
01:20:31    at java.base/java.lang.StringBuilder.append(StringBuilder.java:179)
01:20:31    at org.eclipse.jdt.internal.javac.dom.JavacTypeBinding.getKey(JavacTypeBinding.java:172)
01:20:31    at org.eclipse.jdt.internal.javac.dom.JavacTypeBinding.getKey(JavacTypeBinding.java:139)
01:20:31    at org.eclipse.jdt.internal.javac.dom.JavacTypeBinding.getKey(JavacTypeBinding.java:135)
01:20:31    at org.eclipse.jdt.internal.javac.dom.JavacAnnotationBinding.getKey(JavacAnnotationBinding.java:88)
01:20:31    at org.eclipse.jdt.core.dom.JavacBindingResolver$Bindings.getAnnotationBinding(JavacBindingResolver.java:83)
01:20:31    at org.eclipse.jdt.internal.javac.dom.JavacTypeBinding.lambda$16(JavacTypeBinding.java:472)
01:20:31    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:212)
01:20:31    at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
01:20:31    at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
01:20:31    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:556)
01:20:31    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546)
01:20:31    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:622)
01:20:31    at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:291)
01:20:31    at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:631)
01:20:31    at org.eclipse.jdt.internal.javac.dom.JavacTypeBinding.getTypeAnnotations(JavacTypeBinding.java:473)
01:20:31    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.createBaseType(ImportRewrite.java:1515)
01:20:31    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.internalAddImport(ImportRewrite.java:1587)
01:20:31    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.addImport(ImportRewrite.java:1027)
01:20:31    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.addAnnotation(ImportRewrite.java:678)
01:20:31    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.annotateList(ImportRewrite.java:1472)
01:20:31    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.createBaseType(ImportRewrite.java:1530)
01:20:31    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.internalAddImport(ImportRewrite.java:1587)

ShowAllQuickFixTest.testHandledProblems

01:22:53 org.eclipse.jdt.ls.core.internal.correction.ShowAllQuickFixTest.testHandledProblems -- Time elapsed: 1.250 s <<< ERROR!
01:22:53 java.lang.StackOverflowError
01:22:53    at org.eclipse.jdt.core.dom.JavacBindingResolver$Bindings.getBinding(JavacBindingResolver.java:147)
01:22:53    at org.eclipse.jdt.core.dom.JavacBindingResolver.resolveName(JavacBindingResolver.java:406)
01:22:53    at org.eclipse.jdt.core.dom.Name.resolveBinding(Name.java:88)
01:22:53    at org.eclipse.jdt.internal.corext.codemanipulation.ContextSensitiveImportRewriteContext.findInContext(ContextSensitiveImportRewriteContext.java:113)
01:22:53    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.internalAddImport(ImportRewrite.java:1216)
01:22:53    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.createBaseType(ImportRewrite.java:1519)
01:22:53    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.internalAddImport(ImportRewrite.java:1587)
01:22:53    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.addImport(ImportRewrite.java:1027)
01:22:53    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.internalAddImport(ImportRewrite.java:1602)
01:22:53    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.addImport(ImportRewrite.java:1027)
01:22:53    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.internalAddImport(ImportRewrite.java:1602)
01:22:53    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.addImport(ImportRewrite.java:1027)

UnresolvedVariablesQuickFixTest.testVarOfShadowedType:

01:00:40 org.eclipse.jdt.ls.core.internal.correction.UnresolvedVariablesQuickFixTest.testVarOfShadowedType -- Time elapsed: 1.203 s <<< ERROR!
01:00:40 java.lang.StackOverflowError
01:00:40    at org.eclipse.jdt.internal.javac.dom.JavacTypeBinding.getKey(JavacTypeBinding.java:164)
01:00:40    at org.eclipse.jdt.internal.javac.dom.JavacTypeBinding.getKey(JavacTypeBinding.java:139)
01:00:40    at org.eclipse.jdt.internal.javac.dom.JavacTypeBinding.getKey(JavacTypeBinding.java:135)
01:00:40    at org.eclipse.jdt.internal.javac.dom.JavacAnnotationBinding.getKey(JavacAnnotationBinding.java:88)
01:00:40    at org.eclipse.jdt.core.dom.JavacBindingResolver$Bindings.getAnnotationBinding(JavacBindingResolver.java:83)
01:00:40    at org.eclipse.jdt.internal.javac.dom.JavacTypeBinding.lambda$16(JavacTypeBinding.java:472)
01:00:40    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:212)
01:00:40    at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
01:00:40    at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
01:00:40    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:556)
01:00:40    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546)
01:00:40    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:622)
01:00:40    at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:291)
01:00:40    at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:631)
01:00:40    at org.eclipse.jdt.internal.javac.dom.JavacTypeBinding.getTypeAnnotations(JavacTypeBinding.java:473)
01:00:40    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.createBaseType(ImportRewrite.java:1515)
01:00:40    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.internalAddImport(ImportRewrite.java:1587)
01:00:40    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.addImport(ImportRewrite.java:1027)
01:00:40    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.addAnnotation(ImportRewrite.java:678)
01:00:40    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.annotateList(ImportRewrite.java:1472)
01:00:40    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.createBaseType(ImportRewrite.java:1530)
01:00:40    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.internalAddImport(ImportRewrite.java:1587)
01:00:40    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.addImport(ImportRewrite.java:1027)
01:00:40    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.addAnnotation(ImportRewrite.java:678)
01:00:40    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.annotateList(ImportRewrite.java:1472)
01:00:40    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.createBaseType(ImportRewrite.java:1530)

CleanUpsTest.testMultiCleanup:

01:04:41 org.eclipse.jdt.ls.core.internal.cleanup.CleanUpsTest.testMultiCleanup -- Time elapsed: 1.136 s <<< ERROR!
01:04:41 java.lang.StackOverflowError
01:04:41    at java.base/java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:246)
01:04:41    at java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:590)
01:04:41    at java.base/java.lang.StringBuilder.append(StringBuilder.java:179)
01:04:41    at org.eclipse.jdt.internal.javac.dom.JavacTypeBinding.getKey(JavacTypeBinding.java:172)
01:04:41    at org.eclipse.jdt.internal.javac.dom.JavacTypeBinding.getKey(JavacTypeBinding.java:139)
01:04:41    at org.eclipse.jdt.internal.javac.dom.JavacTypeBinding.getKey(JavacTypeBinding.java:135)
01:04:41    at org.eclipse.jdt.core.dom.JavacBindingResolver$Bindings.getTypeBinding(JavacBindingResolver.java:123)
01:04:41    at org.eclipse.jdt.core.dom.JavacBindingResolver$Bindings.getBinding(JavacBindingResolver.java:147)
01:04:41    at org.eclipse.jdt.core.dom.JavacBindingResolver.resolveName(JavacBindingResolver.java:406)
01:04:41    at org.eclipse.jdt.core.dom.Name.resolveBinding(Name.java:88)
01:04:41    at org.eclipse.jdt.internal.corext.codemanipulation.ContextSensitiveImportRewriteContext.findInContext(ContextSensitiveImportRewriteContext.java:113)
01:04:41    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.internalAddImport(ImportRewrite.java:1216)
01:04:41    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.createBaseType(ImportRewrite.java:1519)
01:04:41    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.internalAddImport(ImportRewrite.java:1587)
01:04:41    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.addImport(ImportRewrite.java:1027)
01:04:41    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.addAnnotation(ImportRewrite.java:678)
01:04:41    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.annotateList(ImportRewrite.java:1472)
01:04:41    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.createBaseType(ImportRewrite.java:1530)
01:04:41    at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.internalAddImport(ImportRewrite.java:1587)

See https://ci.eclipse.org/ls/job/jdt-ls-javac/3/consoleFull for the full list of StackOverflow errors (among other things)

datho7561 commented 3 months ago

for the second case, it's trying to add an import for int :neutral_face:

update: wait that's not the loop I spoke too soon

datho7561 commented 3 months ago

@fbricon after the next build, we should check this again. I think it should be fixed by the latest commit I made