Add support for inline Cpp declarations. (#6994)

For #6830, add support for inline C++ fragments as a declaration rather
than as a packaging directive. For now, this uses `inline Cpp
<string-literal>;` as syntax. The prior `import Cpp inline
<string-literal>;` is left alone for the time being. We can decide
separately whether to remove that.

`inline Cpp` requires that there was at least one `import Cpp`. It's not
clear to me if that's the right design long-term, but it seems
reasonable for now.

Assisted-by: Gemini via Google Antigravity
This commit is contained in:
Richard Smith
2026-03-31 22:27:43 +00:00
committed by GitHub
parent 47e9d62fd5
commit 8b59e85b16
16 changed files with 559 additions and 36 deletions
+2 -1
View File
@@ -478,6 +478,8 @@ class NodeStack {
case Parse::NodeKind::TuplePatternStart:
case Parse::NodeKind::VariableInitializer:
case Parse::NodeKind::VariableIntroducer:
case Parse::NodeKind::InlineImportBody:
case Parse::NodeKind::InlineIntroducer:
return Id::Kind::None;
case Parse::NodeKind::AdaptIntroducer:
case Parse::NodeKind::AliasInitializer:
@@ -511,7 +513,6 @@ class NodeStack {
case Parse::NodeKind::LibraryIntroducer:
case Parse::NodeKind::LibrarySpecifier:
case Parse::NodeKind::InlineImportSpecifier:
case Parse::NodeKind::InlineImportBody:
case Parse::NodeKind::MatchCase:
case Parse::NodeKind::MatchCaseGuard:
case Parse::NodeKind::MatchCaseGuardIntroducer: