You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by "Eirik Bakke (Jira)" <ji...@apache.org> on 2020/06/01 19:04:00 UTC

[jira] [Commented] (NETBEANS-2978) Assertion error in code completion in Java code

    [ https://issues.apache.org/jira/browse/NETBEANS-2978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17121256#comment-17121256 ] 

Eirik Bakke commented on NETBEANS-2978:
---------------------------------------

This bug is easy to reproduce, and has a lot of duplicates (search JIRA for "ScopeImpl.dble"). Here's an even simpler exhibit that causes the same stack trace:

{code:java}
public final class AutoCompletionBugExhibit {
  public void someMethod() {
    Object foo1, foo2, foo3, foo4, foo5, foo6, foo7;
    /* BUG: Place the cursor before the semicolon, press control+space to open autocomplete, and
            press enter to fill in the constructor. An AssertionError in com.sun.tools.javac will
            result. */
    String tableForPrimary = new ;
  }
}
{code}

The problem seems to occur whenever a certain minimum number of variables are in scope to be considered as arguments to the constructor.

> Assertion error in code completion in Java code
> -----------------------------------------------
>
>                 Key: NETBEANS-2978
>                 URL: https://issues.apache.org/jira/browse/NETBEANS-2978
>             Project: NetBeans
>          Issue Type: Bug
>          Components: java - Editor
>    Affects Versions: 11.1, 11.2, 11.3
>            Reporter: Petr Miksik
>            Priority: Major
>              Labels: autocomplete, autocompletion, codecompletion, nbjavac
>         Attachments: ide.log
>
>
> The exception occurs after selecting an item from the provided "Code completion" list and nothing is inserted into code. 
> How to reproduce:
> {noformat}
> public class XXX {
>     private static class CellRenderer implements TableCellRenderer {
>         @Override
>         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
>             JLabel result = new JLabel <-- code completion fails here
>             JLabel result2 = new JLabel <-- it works on this line already. Only the first line is not working
>         }
>     }
> }
> {noformat}
> {noformat}
> java.lang.AssertionError
> 	at com.sun.tools.javac.util.Assert.error(Assert.java:155)
> 	at com.sun.tools.javac.util.Assert.check(Assert.java:46)
> 	at com.sun.tools.javac.code.Scope$ScopeImpl.dble(Scope.java:410)
> 	at com.sun.tools.javac.code.Scope$ScopeImpl.enter(Scope.java:433)
> 	at com.sun.tools.javac.comp.MemberEnter.visitVarDef(MemberEnter.java:480)
> 	at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:972)
> 	at com.sun.tools.javac.comp.MemberEnter.memberEnter(MemberEnter.java:172)
> 	at com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1191)
> 	at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:972)
> 	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:674)
> 	at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:754)
> 	at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:778)
> 	at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1357)
> 	at org.netbeans.lib.nbjavac.services.NBAttr.visitBlock(NBAttr.java:78)
> 	at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1036)
> 	at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:674)
> 	at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:754)
> 	at org.netbeans.api.java.source.TreeUtilities.attributeTree(TreeUtilities.java:892)
> 	at org.netbeans.api.java.source.TreeUtilities.attributeTree(TreeUtilities.java:822)
> 	at org.netbeans.modules.editor.java.JavaCodeTemplateProcessor.type(JavaCodeTemplateProcessor.java:718)
> 	at org.netbeans.modules.editor.java.JavaCodeTemplateProcessor.getProposedValue(JavaCodeTemplateProcessor.java:433)
> 	at org.netbeans.modules.editor.java.JavaCodeTemplateProcessor.updateDefaultValues(JavaCodeTemplateProcessor.java:145)
> 	at org.netbeans.lib.editor.codetemplates.CodeTemplateInsertHandler.processTemplate(CodeTemplateInsertHandler.java:225)
> 	at org.netbeans.lib.editor.codetemplates.CodeTemplateManagerOperation.insert(CodeTemplateManagerOperation.java:273)
> 	at org.netbeans.lib.editor.codetemplates.api.CodeTemplate.insert(CodeTemplate.java:82)
> 	at org.netbeans.modules.editor.java.JavaCompletionItem.process(JavaCompletionItem.java:570)
> 	at org.netbeans.modules.editor.java.JavaCompletionItem.defaultAction(JavaCompletionItem.java:290)
> 	at org.netbeans.modules.editor.completion.CompletionImpl.dispatchKeyEvent(CompletionImpl.java:785)
> 	at org.netbeans.modules.editor.completion.CompletionImpl.keyPressed(CompletionImpl.java:386)
> 	at java.desktop/java.awt.AWTEventMulticaster.keyPressed(AWTEventMulticaster.java:258)
> 	at java.desktop/java.awt.AWTEventMulticaster.keyPressed(AWTEventMulticaster.java:257)
> 	at java.desktop/java.awt.AWTEventMulticaster.keyPressed(AWTEventMulticaster.java:257)
> 	at java.desktop/java.awt.Component.processKeyEvent(Component.java:6590)
> 	at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2849)
> 	at java.desktop/java.awt.Component.processEvent(Component.java:6409)
> 	at java.desktop/java.awt.Container.processEvent(Container.java:2263)
> 	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5008)
> 	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
> 	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
> 	at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1950)
> 	at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:870)
> 	at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1139)
> 	at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1009)
> 	at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:835)
> 	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4889)
> 	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
> 	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2772)
> 	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
> 	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
> 	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
> 	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
> 	at java.base/java.security.AccessController.doPrivileged(Native Method)
> 	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
> 	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
> 	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
> 	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
> 	at java.base/java.security.AccessController.doPrivileged(Native Method)
> 	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
> 	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
> 	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
> [catch] at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
> 	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
> 	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
> 	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
> 	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
> 	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
> {noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists