refactor(ffi-linkage): Phase 9.3-src — purge 'foreign' from src/ comments + a user-facing diagnostic
Reword every 'foreign' comment to the extern/runtime-class vocabulary matching the renamed identifiers (foreign call→extern call, foreign class→runtime class, foreign path→runtime path, the #foreign-literal comment mentions → extern, etc.). Also fixes two USER-FACING issues: the 'expected … #foreign … after type annotation' parse error no longer advertises the removed keyword, and the Android 'no #jni_main' help diagnostic now shows '#jni_class(…) extern' instead of the rejected '#foreign #jni_class'. Removed the now-dead prefix-#foreign-vs-postfix conflict branch in parseRuntimeClassDecl (the caller rejects #foreign before it runs). src/ now contains 'foreign' ONLY in the hash_foreign token machinery + its 4 rejection messages — the deprecation mechanism (kept per the 9.0 recommendation; the message MUST name #foreign to guide migration). Snapshot-neutral; suite green (646 corpus / 444 unit, 0 failed).
This commit is contained in:
@@ -808,14 +808,14 @@ pub fn hasComptimeParams(fd: *const ast.FnDecl) bool {
|
||||
}
|
||||
|
||||
/// A plain free function: no type params (not generic) and an ordinary sx
|
||||
/// body (not `#foreign` / `#builtin` / `#compiler` / `extern`). Only these get
|
||||
/// body (not `extern` / `#builtin` / `#compiler` / `extern`). Only these get
|
||||
/// an out-of-line identity-addressable slot — the bare-call disambiguation
|
||||
/// and the shadow-author lowering pass leave every other shape
|
||||
/// to the existing name-keyed dispatch.
|
||||
pub fn isPlainFreeFn(fd: *const ast.FnDecl) bool {
|
||||
if (fd.type_params.len > 0) return false;
|
||||
// An `extern` import is an external C symbol with no sx-lowerable body —
|
||||
// name-keyed first-wins dispatch like a `#foreign` body, never a plain free
|
||||
// name-keyed first-wins dispatch like a `extern` body, never a plain free
|
||||
// fn. `export` DEFINES a real body, so it stays plain-free.
|
||||
if (fd.extern_export == .extern_) return false;
|
||||
return switch (fd.body.data) {
|
||||
@@ -1032,7 +1032,7 @@ pub fn headNameOfCallee(callee: *const Node) ?HeadName {
|
||||
/// (`.proceed`) when import facts are unwired, the source context is absent,
|
||||
/// the default-Context emitter is running (built-in infrastructure resolves
|
||||
/// independent of the user's import style, F1), the querying source is the OWN
|
||||
/// author, a single flat author is not registered yet (a forward / foreign /
|
||||
/// author, a single flat author is not registered yet (a forward / extern /
|
||||
/// generic template — the caller instantiates it), or `name` is a block-local
|
||||
/// of this source / no type author at all. Library-internal heads stay visible
|
||||
/// because every instantiation kind is source-pinned to the template's defining
|
||||
|
||||
Reference in New Issue
Block a user