//META: generated=true
//META: model=claude-opus-4-7
//META: generated_at=2026-05-21T00:30:00+00:00
//META: source_commit=60db9042207670b39b0524118887efacb7a3d42d
//META: doc_ref=docs/generated/design/syntax-reference/keywords-and-builtins.md#core-module-syntax-declarations
//META: doc_section_digest=950d7a7efcea5da748ec49fa6499555097f3093abb07ac97945a51be1ce2339c
//META: purpose=Negative: `int` is a core-module type name; once a local named `int` exists, the parser still treats a subsequent leading `int` in a declaration as the type token, so `int x = int + 1;` is rejected because the parser cannot reuse the type name as a value expression.
//META: intent=negative
//META: pipeline_stage=parse
//META: warning=Auto-generated. May drift from source. Do not edit by hand.

// Probes the keyword-vs-identifier boundary for the core-module type
// name `int`. The local `int int = 5;` parses (decl context binds the
// identifier), but a follow-up declaration that needs `int` to be a
// type token at the head still wins over identifier lookup.

//DIAGNOSTIC_TEST:SIMPLE(filecheck=CHECK):

void main()
{
    int int = 5;
    int x = int + 1;
    // CHECK-DAG: error
    // CHECK-DAG: expected a type
// CHECK-DAG: E30060
    printf("%d\n", x);
}
