apple/pkl · error · ParserError

invalidProperty

invalidProperty

Error message

Invalid property definition. Expected a type annotation, `=` or `{`.

What it means

Parser error in ParserImpl.parseClassProperty: after the property name in a class body, the parser requires either a type annotation, `=` (expression) or `{` (member bodies); none was found. The input at fault is a malformed class property declaration, e.g. `class Foo { bar }` with no value or annotation.

Solutions

  1. Add a type annotation (`bar: Int`) or a value (`bar = 1`).
  2. If a member body was intended, open it with `{ ... }`.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pkl-parser/src/main/java/org/pkl/parser/ParserImpl.java:483 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apple/pkl@f3efcbfc9b (2026-09-08). Data as JSON: /api/errors/4c92cf696fee3c33. Report an issue: GitHub.

Appendix: source

Thrown at pkl-parser/src/main/java/org/pkl/parser/ParserImpl.java:483

        bodies.add(parseObjectBody());
      }
    }
    children.add(name);
    children.add(typeAnnotation);
    children.add(expr);
    children.addAll(bodies);
    if (expr != null) {
      return new ClassProperty(children, modifiersOffset, nameOffset, start.endWith(expr.span()));
    }
    if (!bodies.isEmpty()) {
      return new ClassProperty(
          children,
          modifiersOffset,
          nameOffset,
          start.endWith(bodies.get(bodies.size() - 1).span()));
    }
    if (typeAnnotation == null) {
      throw new ParserError(ErrorMessages.create("invalidProperty"), name.span());
    }
    return new ClassProperty(
        children, modifiersOffset, nameOffset, start.endWith(typeAnnotation.span()));
  }

  private ClassMethod parseClassMethod(MemberHeader header) {
    var func = expect(Token.FUNCTION, "unexpectedToken", "function").span;
    var start = header.span(func);
    var headerSpanStart = header.modifierSpan(func);
    var children = new ArrayList<@Nullable Node>();
    children.add(header.docComment);
    children.addAll(header.annotations);
    var modifiersOffset = header.annotations.size() + 1;
    children.addAll(header.modifiers);
    var nameOffset = modifiersOffset + header.modifiers.size();
    var name = parseIdentifier();
    children.add(name);
    TypeParameterList typePars = null;

View on GitHub (pinned to f3efcbfc9b)