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
- Add a type annotation (`bar: Int`) or a value (`bar = 1`).
- 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)