Package com.google.caja.lexer

Examples of com.google.caja.lexer.FilePosition


    //    {
    //      literals: ["foo", "bar"],
    //      properties: [
    //      fns: [],
    //    }
    final FilePosition unk = FilePosition.UNKNOWN;
    ObjectConstructor obj = new ObjectConstructor(unk);
    appendIfNotEmptyOrIgnored(
        obj, "lits",
        mapToJsArray(
            Sets.newTreeSet(data.literals),
View Full Code Here


  }

  private static <T> ArrayConstructor mapToJsArray(
      Iterable<? extends T> it,
      Function<? super T, Expression> f) {
    FilePosition unk = FilePosition.UNKNOWN;
    ArrayConstructor arr = new ArrayConstructor(
        unk, Collections.<Expression>emptyList());
    for (T el : it) {
      arr.appendChild(el == null ? new NullLiteral(unk) : f.apply(el));
    }
View Full Code Here

    for (MessagePart expectedPart : parts) {
      for (MessagePart candidate : msg.getMessageParts()) {
        if (candidate.equals(expectedPart)) { continue outerLoop; }
        if (candidate instanceof FilePosition
            && expectedPart instanceof FilePosition) {
          FilePosition a = (FilePosition) candidate;
          FilePosition b = (FilePosition) expectedPart;
          // Ignore startCharInFile for purposes of testing to make tests more
          // robust against changes.
          if (a.source().equals(b.source())
              && a.startLineNo() == b.startLineNo()
              && a.startCharInLine() == b.startCharInLine()
              && a.endLineNo() == b.endLineNo()
              && a.endCharInLine() == b.endCharInLine()) {
            continue outerLoop;
          }
        }
      }
      ++missing;
View Full Code Here

  public final void testMessageSorting() {
    InputSource a = new InputSource(URI.create("test:///a"));
    InputSource b = new InputSource(URI.create("test:///b"));
    InputSource c = new InputSource(URI.create("test:///c"));
    FilePosition a1 = FilePosition.instance(a, 1, 10, 10);
    FilePosition a2 = FilePosition.instance(a, 2, 20, 10);
    FilePosition a12 = FilePosition.span(a1, a2);
    FilePosition b2 = FilePosition.instance(b, 2, 20, 10);
    FilePosition c1 = FilePosition.instance(c, 1, 10, 10);
    FilePosition c2 = FilePosition.instance(c, 2, 20, 10);
    FilePosition c12 = FilePosition.span(c1, c2);

    Message ma12 = new Message(TestMessageType.MT, a12);
    Message mc2 = new Message(TestMessageType.MT, c2);
    Message mc12 = new Message(TestMessageType.MT, c12);
    Message mb2 = new Message(TestMessageType.MT, b2);
View Full Code Here

  @Override
  protected void setUp() throws Exception {
    super.setUp();

    FilePosition unk = FilePosition.UNKNOWN;

    // $0: {
    //   $1: {
    //     2;
    //     3;
View Full Code Here

  }

  private static CharProducer textContentOf(Element script) {
    List<CharProducer> parts = new ArrayList<CharProducer>();
    for (Node child : Nodes.childrenOf(script)) {
      FilePosition childPos = Nodes.getFilePositionFor(child);
      switch (child.getNodeType()) {
        case Node.TEXT_NODE:
          String rawText = Nodes.getRawText((Text) child);
          String decodedText = child.getNodeValue();
          CharProducer cp = null;
View Full Code Here

    // look for any labels preceding statement
    Mark m = tq.mark();
    Token<JsTokenType> t = tq.peek();
    if (JsTokenType.WORD == t.type) {
      String label = parseIdentifier(false);
      FilePosition labelPos = t.pos;
      if (tq.checkToken(Punctuation.COLON)) {
        t = tq.peek();
        AbstractStatement s = null;
        if (JsTokenType.KEYWORD == t.type) {
          switch (Keyword.fromString(t.text)) {
View Full Code Here

      Token<JsTokenType> quotedString = tq.pop();

      if (!tq.checkToken(Punctuation.SEMI)) {
        Token<JsTokenType> t = !tq.isEmpty() ? tq.peek() : null;
        if ((t == null || !continuesExpr(t.text)) && semicolonInserted()) {
          FilePosition semiPoint = FilePosition.endOf(tq.lastPosition());
          MessageLevel lvl = tq.isEmpty()
              || tq.lookaheadToken(Punctuation.RCURLY)
              ? MessageLevel.LOG : MessageLevel.LINT;
          mq.addMessage(MessageType.SEMICOLON_INSERTED, lvl, semiPoint);
        } else {
View Full Code Here

        s = new DoWhileLoop(posFrom(start), label, body, cond);
        // http://code.google.com/p/google-caja/issues/detail?id=1316
        // ES[35] requires ; after do-while, but browsers are ok without it.
        // Here we either eat a ; or warn if it's missing.
        if (!tq.checkToken(Punctuation.SEMI)) {
          FilePosition pos = FilePosition.endOf(tq.lastPosition());
          mq.addMessage(
              MessageType.SEMICOLON_INSERTED, MessageLevel.LINT, pos);
        }
        break;
      }
      case SWITCH:
      {
        tq.advance();
        tq.expectToken(Punctuation.LPAREN);
        Expression switchValue = parseExpressionInt(true);
        tq.expectToken(Punctuation.RPAREN);
        tq.expectToken(Punctuation.LCURLY);
        List<SwitchCase> cases = Lists.newArrayList();
        while (!tq.checkToken(Punctuation.RCURLY)) {
          Mark caseMark = tq.mark();
          Expression caseValue;
          if (tq.checkToken(Keyword.DEFAULT)) {
            caseValue = null;
          } else {
            tq.expectToken(Keyword.CASE);
            caseValue = parseExpressionInt(false);
          }
          tq.expectToken(Punctuation.COLON);
          FilePosition colonPos = tq.lastPosition();
          Mark caseBodyStart = tq.mark();
          List<Statement> caseBodyContents = Lists.newArrayList();
          while (!(tq.lookaheadToken(Keyword.DEFAULT)
                   || tq.lookaheadToken(Keyword.CASE)
                   || tq.lookaheadToken(Punctuation.RCURLY))) {
            caseBodyContents.add(parseTerminatedStatement());
          }
          FilePosition caseBodyPos = caseBodyContents.isEmpty()
              ? FilePosition.endOf(colonPos) : posFrom(caseBodyStart);
          Block caseBody = new Block(caseBodyPos, caseBodyContents);
          finish(caseBody, caseBodyStart);
          SwitchCase caseStmt = (null != caseValue)
              ? new CaseStmt(posFrom(caseMark), caseValue, caseBody)
View Full Code Here

          if (semicolonInserted()) {
            List<Message> messages = mq.getMessages();
            if (nMessages < messages.size()) {
              messages.subList(nMessages, messages.size()).clear();
            }
            FilePosition semiPoint = FilePosition.endOf(tq.lastPosition());
            messages.add(new Message(
                             MessageType.SEMICOLON_INSERTED, semiPoint));
            return left;
          } else {
            tq.rewind(m3);
View Full Code Here

TOP

Related Classes of com.google.caja.lexer.FilePosition

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.