Ejemplo n.º 1
0
  /*
   * typedef
   *   : modifiers "type" SimpleName (typeParameters typeConstraints)? "=" type
   *   ;
   */
  JetNodeType parseTypeDef() {
    assert _at(TYPE_KEYWORD);

    advance(); // TYPE_KEYWORD

    expect(
        IDENTIFIER,
        "Type name expected",
        TokenSet.orSet(TokenSet.create(LT, EQ, SEMICOLON), TOPLEVEL_OBJECT_FIRST));

    if (parseTypeParameterList(TYPE_PARAMETER_GT_RECOVERY_SET)) {
      parseTypeConstraints();
    }

    expect(EQ, "Expecting '='", TokenSet.orSet(TOPLEVEL_OBJECT_FIRST, TokenSet.create(SEMICOLON)));

    parseTypeRef();

    consumeIf(SEMICOLON);

    return TYPEDEF;
  }