js: fixed bug with incorrect parsing of [[function(){return 1;}]][0][0]()
authorMaxim.Mossienko <Maxim.Mossienko@jetbrains.com>
Tue, 19 Jan 2010 12:30:11 +0000 (15:30 +0300)
committerMaxim.Mossienko <Maxim.Mossienko@jetbrains.com>
Tue, 19 Jan 2010 12:30:11 +0000 (15:30 +0300)
platform/lang-api/src/com/intellij/lang/PsiBuilder.java
platform/lang-impl/src/com/intellij/lang/impl/PsiBuilderImpl.java

index ea727a2638d9e3777ac46ed6d20e98092ef37661..2f2052f1f31a45ec587813081d1c3a9100bee6b4 100644 (file)
@@ -177,4 +177,8 @@ public interface PsiBuilder extends UserDataHolder {
 
   void enforceCommentTokens(TokenSet tokens);
 
+  /**
+   * @return latest left done node for context dependent parsing 
+   */
+  @Nullable LighterASTNode getLatestDoneMarker();
 }
index 6728f36d45bcb9d324f2ab86734b47e73b37950a..489ee20bd61ade5155c93b9bea9b8f89a2dcbea1 100644 (file)
@@ -175,6 +175,16 @@ public class PsiBuilderImpl extends UserDataHolderBase implements PsiBuilder {
     myComments = tokens;
   }
 
+  public @Nullable LighterASTNode getLatestDoneMarker() {
+    int index = myProduction.size() - 1;
+    while (index >= 0) {
+      ProductionMarker marker = myProduction.get(index);
+      if (marker instanceof DoneMarker) return ((DoneMarker)marker).myStart;
+      --index;
+    }
+    return null;
+  }
+
   private abstract static class Node implements LighterASTNode {
     public abstract int hc();
   }