Skip to content

Surface Expr value and object kinds on the managed layer#818

Merged
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:tannergooding-v22-expr-value-kind
Jul 17, 2026
Merged

Surface Expr value and object kinds on the managed layer#818
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:tannergooding-v22-expr-value-kind

Conversation

@tannergooding

Copy link
Copy Markdown
Member

Surfaces the last non-singleton gap in the v22 interop surface: an Expr's value and object kind.

  • Expr.ValueKind (CX_ExprValueKind) with derived IsLValue / IsPRValue / IsXValue / IsGLValue.
  • Expr.ObjectKind (CX_ExprObjectKind).
  • CXCursor.ValueKind / ObjectKind mid-layer accessors they build on.

Both bridges dispatch on any Expr, and the enums were already present in the regenerated interop. Foundational for expression analysis (glvalue/prvalue/xvalue categorization, bitfield/ObjC-property/subscript object kinds).


Adds ExprValueKindTest covering lvalue/prvalue/xvalue via x / 42 / static_cast<int&&>(x), and ordinary vs bitfield object kinds. Full interop suite green (94), 0 warnings.

Note

Authored with Copilot.

Adds Expr.ValueKind (CX_ExprValueKind) with derived IsLValue/IsPRValue/
IsXValue/IsGLValue and Expr.ObjectKind (CX_ExprObjectKind), plus the
CXCursor.ValueKind/ObjectKind mid-layer accessors they build on. These bridges
dispatch on any Expr and were the last non-singleton gap in the v22 surface.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@tannergooding
tannergooding merged commit 3205f19 into dotnet:main Jul 17, 2026
12 checks passed
@tannergooding
tannergooding deleted the tannergooding-v22-expr-value-kind branch July 17, 2026 14:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant