This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 114613 - Invalid state of lexer after fixes of issue 87014
Summary: Invalid state of lexer after fixes of issue 87014
Status: RESOLVED FIXED
Alias: None
Product: editor
Classification: Unclassified
Component: Lexer (show other bugs)
Version: 6.x
Hardware: All All
: P1 blocker (vote)
Assignee: Miloslav Metelka
URL:
Keywords:
: 114647 (view as bug list)
Depends on:
Blocks:
 
Reported: 2007-09-04 12:52 UTC by Marek Fukala
Modified: 2007-09-07 17:25 UTC (History)
5 users (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments
AssertionError metioned by Marek (4.68 KB, text/plain)
2007-09-06 13:04 UTC, Martin Schovanek
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Marek Fukala 2007-09-04 12:52:24 UTC
After the latest fixes regressions caused by fix of issue #87014, I am experiencing strange bahaviour of the dynamicaly
embedded languages in JSP.

1) embedded CSS doesn't work properly - issue #114346
2) I am getting to following situation when modifying the embedded css:
    a) create an empty JSP
    b) put inside:
       <style>

       </style>
    c) type 'X' into the css block
    d) wait until the parser finishes (about 1-2 sec)
    e) type 'x' again 
    f) you will get following exc. which signal invalid state of the token sequence:

java.lang.IllegalStateException: Token.text() of <null> == null without any previous modification of the underlying
document! This seems to be a bug in lexer. Please report the issue to lexer module and attach the info dumped into the
log, the document and possibly steps to reproduce.
        at org.netbeans.modules.html.editor.coloring.EmbeddingUpdater.createEmbedding(EmbeddingUpdater.java:263)
        at org.netbeans.modules.html.editor.coloring.EmbeddingUpdater.endTag(EmbeddingUpdater.java:166)
        at org.netbeans.modules.html.editor.coloring.EmbeddingUpdater.parsingFinished(EmbeddingUpdater.java:92)
        at org.netbeans.editor.ext.html.parser.SyntaxParser.notifyParsingFinished(SyntaxParser.java:188)
        at org.netbeans.editor.ext.html.parser.SyntaxParser.parse(SyntaxParser.java:154)
        at org.netbeans.editor.ext.html.parser.SyntaxParser.access$200(SyntaxParser.java:44)
        at org.netbeans.editor.ext.html.parser.SyntaxParser$2.run(SyntaxParser.java:98)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:539)
        at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:964)
TokenSequence:
T[0]: <null-text>, TEXT[0], 7, 3, DefT, la=1, st=8000, IHC=22077912; EC-IHC=18561514
    Embedding[0]: "text/x-jsp/text/html/text/x-css"

*[1]: <null-text>, TAG_OPEN_SYMBOL[14], 10, 2, DefT, la=1, st=9000, IHC=7823456; EC-IHC=22572032
    Embedding[0]: "text/x-jsp/text/html/text/x-css"


The issue also seems to cause some other weird editor behaviour in some case, please address asap, thanks.
Comment 1 Miloslav Metelka 2007-09-04 14:31:17 UTC
Yes, I've already found a cause of this problem yesterday and I have the fix almost finished. I've also made some
refactoring of the lexer's updating process. I plan to integrate it today.
Comment 2 Miloslav Metelka 2007-09-05 14:36:26 UTC
Apologies, I there was one thing that delayed me. The exception should no longer occur now. As a side effect of the fix
I have also improved debugging of the TokenHierarchy i.e. TH.toString(). It now outputs list of existing token list
lists (for TH.tokenSequenceList()). Ruby tests should pass as well.
Checking in lexer/src/org/netbeans/lib/lexer/TokenHierarchyOperation.java;
/cvs/lexer/src/org/netbeans/lib/lexer/TokenHierarchyOperation.java,v  <--  TokenHierarchyOperation.java
new revision: 1.21; previous revision: 1.20
done
Checking in lexer/src/org/netbeans/lib/lexer/LexerUtilsConstants.java;
/cvs/lexer/src/org/netbeans/lib/lexer/LexerUtilsConstants.java,v  <--  LexerUtilsConstants.java
new revision: 1.17; previous revision: 1.16
done
Checking in lexer/src/org/netbeans/lib/lexer/TokenListList.java;
/cvs/lexer/src/org/netbeans/lib/lexer/TokenListList.java,v  <--  TokenListList.java
new revision: 1.5; previous revision: 1.4
done
Checking in lexer/src/org/netbeans/lib/lexer/EmbeddedTokenList.java;
/cvs/lexer/src/org/netbeans/lib/lexer/EmbeddedTokenList.java,v  <--  EmbeddedTokenList.java
new revision: 1.11; previous revision: 1.10
done
RCS file: /cvs/lexer/src/org/netbeans/lib/lexer/TokenHierarchyUpdate.java,v
done
Checking in lexer/src/org/netbeans/lib/lexer/TokenHierarchyUpdate.java;
/cvs/lexer/src/org/netbeans/lib/lexer/TokenHierarchyUpdate.java,v  <--  TokenHierarchyUpdate.java
initial revision: 1.1
done
Checking in lexer/src/org/netbeans/lib/lexer/EmbeddingContainer.java;
/cvs/lexer/src/org/netbeans/lib/lexer/EmbeddingContainer.java,v  <--  EmbeddingContainer.java
new revision: 1.13; previous revision: 1.12
done
Checking in lexer/src/org/netbeans/lib/lexer/inc/TokenListUpdater.java;
/cvs/lexer/src/org/netbeans/lib/lexer/inc/TokenListUpdater.java,v  <--  TokenListUpdater.java
new revision: 1.18; previous revision: 1.17
done
Checking in lexer/src/org/netbeans/lib/lexer/inc/IncTokenList.java;
/cvs/lexer/src/org/netbeans/lib/lexer/inc/IncTokenList.java,v  <--  IncTokenList.java
new revision: 1.12; previous revision: 1.11
done
Checking in lexer/src/org/netbeans/lib/lexer/inc/TokenHierarchyEventInfo.java;
/cvs/lexer/src/org/netbeans/lib/lexer/inc/TokenHierarchyEventInfo.java,v  <--  TokenHierarchyEventInfo.java
new revision: 1.6; previous revision: 1.5
done
Checking in editor/util/src/org/netbeans/lib/editor/util/CharSequenceUtilities.java;
/cvs/editor/util/src/org/netbeans/lib/editor/util/CharSequenceUtilities.java,v  <--  CharSequenceUtilities.java
new revision: 1.8; previous revision: 1.7
done
Checking in lexer/test/unit/src/org/netbeans/lib/lexer/test/LexerTestUtilities.java;
/cvs/lexer/test/unit/src/org/netbeans/lib/lexer/test/LexerTestUtilities.java,v  <--  LexerTestUtilities.java
new revision: 1.12; previous revision: 1.11
done
Checking in lexer/test/unit/src/org/netbeans/lib/lexer/JoinSectionsTest.java;
/cvs/lexer/test/unit/src/org/netbeans/lib/lexer/JoinSectionsTest.java,v  <--  JoinSectionsTest.java
new revision: 1.5; previous revision: 1.4
done
Checking in lexer/src/org/netbeans/api/lexer/TokenUtilities.java;
/cvs/lexer/src/org/netbeans/api/lexer/TokenUtilities.java,v  <--  TokenUtilities.java
new revision: 1.4; previous revision: 1.3
done
Checking in lexer/src/org/netbeans/api/lexer/TokenSequence.java;
/cvs/lexer/src/org/netbeans/api/lexer/TokenSequence.java,v  <--  TokenSequence.java
new revision: 1.14; previous revision: 1.13
done
Comment 3 Miloslav Metelka 2007-09-05 14:42:17 UTC
Oops, I've got one more exc :( Reopening.
java.lang.NullPointerException
	at org.netbeans.lib.lexer.TokenHierarchyUpdate$TLLInfo.doMarking(TokenHierarchyUpdate.java:524)
	at org.netbeans.lib.lexer.TokenHierarchyUpdate$TLLInfo.markRemoved(TokenHierarchyUpdate.java:377)
	at org.netbeans.lib.lexer.TokenHierarchyUpdate.markRemovedEmbeddings(TokenHierarchyUpdate.java:279)
	at org.netbeans.lib.lexer.TokenHierarchyUpdate.processNonBoundsChange(TokenHierarchyUpdate.java:222)
Comment 4 Miloslav Metelka 2007-09-05 16:28:19 UTC
Additional fix of the NPE and token list list initialization.
Checking in EmbeddedTokenList.java;
/cvs/lexer/src/org/netbeans/lib/lexer/EmbeddedTokenList.java,v  <--  EmbeddedTokenList.java
new revision: 1.12; previous revision: 1.11
done
Checking in TokenHierarchyUpdate.java;
/cvs/lexer/src/org/netbeans/lib/lexer/TokenHierarchyUpdate.java,v  <--  TokenHierarchyUpdate.java
new revision: 1.2; previous revision: 1.1
done
Removing EmbeddedLexerInputOperation.java;
/cvs/lexer/src/org/netbeans/lib/lexer/EmbeddedLexerInputOperation.java,v  <--  EmbeddedLexerInputOperation.java
new revision: delete; previous revision: 1.1
done
Checking in TokenListList.java;
/cvs/lexer/src/org/netbeans/lib/lexer/TokenListList.java,v  <--  TokenListList.java
new revision: 1.6; previous revision: 1.5
done
Comment 5 Marek Fukala 2007-09-06 10:12:57 UTC
After commiting fixes to 

Checking in web/jspsyntax/lexer/src/org/netbeans/lib/jsp/lexer/JspLexer.java;
new revision: 1.27; previous revision: 1.26
Checking in html/lexer/src/org/netbeans/lib/html/lexer/HTMLLexer.java;
new revision: 1.18; previous revision: 1.17

the JSP editor is almost unusable, this seems not to be regressions of the fixes, they just probably revealed other
problems in the infrastructure.

Just try to open any JSP and type <%@ ... you will got some exceptions, the editor text is disappearing, you have to
close the file :-|.

I tend to think this is a P1...
Comment 6 Martin Schovanek 2007-09-06 13:04:47 UTC
Created attachment 48254 [details]
AssertionError metioned by Marek
Comment 7 Martin Schovanek 2007-09-06 13:11:00 UTC
But the steps to reproduce on my box are little different:
1) type in a .jsp
  <%
      out.print("AA");
  %
2) save it
3) type >
4) undo or remove the last >
ERROR: IDE throws the AssertionError
Comment 8 Martin Schovanek 2007-09-06 16:18:14 UTC
Agree with Marek's opinion, it is Beta1 stopper. Increasing priority to P1. 
Comment 9 Miloslav Metelka 2007-09-06 21:15:48 UTC
Hopefully fixed. The assertion should no longer occur in the mentioned case. I did not experience any assertions during
jsp editing so far. Syntax coloring of
<a href="aa${xbb}aa"/>
seems to be updated fine.
However I'm experiencing a repaint problem (text not shown) when opening a ruby file with just a single line with a
comment. First I thought it's because of the lexer but I did not find any inconsistency. Later I've reproduced the same
behavior with the .properties file which does not use the lexer so it should be somewhere else than in the lexer. I will
investigate it further.

Checking in TokenHierarchyOperation.java;
/cvs/lexer/src/org/netbeans/lib/lexer/TokenHierarchyOperation.java,v  <--  TokenHierarchyOperation.java
new revision: 1.22; previous revision: 1.21
done
Checking in LexerUtilsConstants.java;
/cvs/lexer/src/org/netbeans/lib/lexer/LexerUtilsConstants.java,v  <--  LexerUtilsConstants.java
new revision: 1.18; previous revision: 1.17
done
Checking in TokenHierarchyUpdate.java;
/cvs/lexer/src/org/netbeans/lib/lexer/TokenHierarchyUpdate.java,v  <--  TokenHierarchyUpdate.java
new revision: 1.3; previous revision: 1.2
done
Checking in EmbeddingContainer.java;
/cvs/lexer/src/org/netbeans/lib/lexer/EmbeddingContainer.java,v  <--  EmbeddingContainer.java
new revision: 1.14; previous revision: 1.13
done
Checking in TokenListList.java;
/cvs/lexer/src/org/netbeans/lib/lexer/TokenListList.java,v  <--  TokenListList.java
new revision: 1.7; previous revision: 1.6
done
Checking in inc/TokenListChange.java;
/cvs/lexer/src/org/netbeans/lib/lexer/inc/TokenListChange.java,v  <--  TokenListChange.java
new revision: 1.12; previous revision: 1.11
Comment 10 Miloslav Metelka 2007-09-06 21:22:29 UTC
*** Issue 114647 has been marked as a duplicate of this issue. ***
Comment 11 Miloslav Metelka 2007-09-06 23:07:48 UTC
Integrated into release60_beta1:

Checking in lexer/src/org/netbeans/api/lexer/TokenSequence.java;
/cvs/lexer/src/org/netbeans/api/lexer/TokenSequence.java,v  <--  TokenSequence.java
new revision: 1.13.2.1; previous revision: 1.13
done
Checking in lexer/src/org/netbeans/api/lexer/TokenUtilities.java;
/cvs/lexer/src/org/netbeans/api/lexer/TokenUtilities.java,v  <--  TokenUtilities.java
new revision: 1.3.14.1; previous revision: 1.3
done
Removing lexer/src/org/netbeans/lib/lexer/EmbeddedLexerInputOperation.java;
/cvs/lexer/src/org/netbeans/lib/lexer/Attic/EmbeddedLexerInputOperation.java,v  <--  EmbeddedLexerInputOperation.java
new revision: delete; previous revision: 1.1.2
done
Checking in lexer/src/org/netbeans/lib/lexer/EmbeddedTokenList.java;
/cvs/lexer/src/org/netbeans/lib/lexer/EmbeddedTokenList.java,v  <--  EmbeddedTokenList.java
new revision: 1.10.2.1; previous revision: 1.10
done
Checking in lexer/src/org/netbeans/lib/lexer/EmbeddingContainer.java;
/cvs/lexer/src/org/netbeans/lib/lexer/EmbeddingContainer.java,v  <--  EmbeddingContainer.java
new revision: 1.12.2.1; previous revision: 1.12
done
Checking in lexer/src/org/netbeans/lib/lexer/LexerUtilsConstants.java;
/cvs/lexer/src/org/netbeans/lib/lexer/LexerUtilsConstants.java,v  <--  LexerUtilsConstants.java
new revision: 1.16.2.1; previous revision: 1.16
done
Checking in lexer/src/org/netbeans/lib/lexer/TokenHierarchyOperation.java;
/cvs/lexer/src/org/netbeans/lib/lexer/TokenHierarchyOperation.java,v  <--  TokenHierarchyOperation.java
new revision: 1.20.2.1; previous revision: 1.20
done
Checking in lexer/src/org/netbeans/lib/lexer/TokenHierarchyUpdate.java;
/cvs/lexer/src/org/netbeans/lib/lexer/TokenHierarchyUpdate.java,v  <--  TokenHierarchyUpdate.java
new revision: 1.3.2.1; previous revision: 1.3
done
Checking in lexer/src/org/netbeans/lib/lexer/TokenListList.java;
/cvs/lexer/src/org/netbeans/lib/lexer/TokenListList.java,v  <--  TokenListList.java
new revision: 1.4.2.1; previous revision: 1.4
done
Checking in lexer/src/org/netbeans/lib/lexer/inc/IncTokenList.java;
/cvs/lexer/src/org/netbeans/lib/lexer/inc/IncTokenList.java,v  <--  IncTokenList.java
new revision: 1.11.2.1; previous revision: 1.11
done
Checking in lexer/src/org/netbeans/lib/lexer/inc/TokenHierarchyEventInfo.java;
/cvs/lexer/src/org/netbeans/lib/lexer/inc/TokenHierarchyEventInfo.java,v  <--  TokenHierarchyEventInfo.java
new revision: 1.5.10.1; previous revision: 1.5
done
Checking in lexer/src/org/netbeans/lib/lexer/inc/TokenListChange.java;
/cvs/lexer/src/org/netbeans/lib/lexer/inc/TokenListChange.java,v  <--  TokenListChange.java
new revision: 1.11.6.1; previous revision: 1.11
done
Checking in lexer/src/org/netbeans/lib/lexer/inc/TokenListUpdater.java;
/cvs/lexer/src/org/netbeans/lib/lexer/inc/TokenListUpdater.java,v  <--  TokenListUpdater.java
new revision: 1.17.2.1; previous revision: 1.17
done
Checking in lexer/test/unit/src/org/netbeans/lib/lexer/JoinSectionsTest.java;
/cvs/lexer/test/unit/src/org/netbeans/lib/lexer/JoinSectionsTest.java,v  <--  JoinSectionsTest.java
new revision: 1.4.2.1; previous revision: 1.4
done
Checking in lexer/test/unit/src/org/netbeans/lib/lexer/test/LexerTestUtilities.java;
/cvs/lexer/test/unit/src/org/netbeans/lib/lexer/test/LexerTestUtilities.java,v  <--  LexerTestUtilities.java
new revision: 1.11.10.1; previous revision: 1.11
done
Checking in editor/util/src/org/netbeans/lib/editor/util/CharSequenceUtilities.java;
/cvs/editor/util/src/org/netbeans/lib/editor/util/CharSequenceUtilities.java,v  <--  CharSequenceUtilities.java
new revision: 1.7.14.1; previous revision: 1.7

I did not integrate JspLexer and HTMLLexer updates into release60_beta1 - I'll talk to Marek regarding it ASAP.
Comment 12 Martin Schovanek 2007-09-07 14:40:11 UTC
Reopennig till Marek integrates JspLexer and HTMLLexer updates into release60_beta1
Comment 13 Miloslav Metelka 2007-09-07 17:25:03 UTC
Checking in html/lexer/src/org/netbeans/lib/html/lexer/HTMLLexer.java;
/cvs/html/lexer/src/org/netbeans/lib/html/lexer/HTMLLexer.java,v  <--  HTMLLexer.java
new revision: 1.17.6.1; previous revision: 1.17
done
Checking in web/jspsyntax/lexer/src/org/netbeans/api/jsp/lexer/JspTokenId.java;
/cvs/web/jspsyntax/lexer/src/org/netbeans/api/jsp/lexer/JspTokenId.java,v  <--  JspTokenId.java
new revision: 1.13.10.1; previous revision: 1.13
done
Checking in web/jspsyntax/lexer/src/org/netbeans/lib/jsp/lexer/JspLexer.java;
/cvs/web/jspsyntax/lexer/src/org/netbeans/lib/jsp/lexer/JspLexer.java,v  <--  JspLexer.java
new revision: 1.26.2.1; previous revision: 1.26