You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix reflected runtime names for nested generic local types by formatting type arguments with reflect-style package paths (command-line-arguments becomes main).
Stop adding the local ordinal suffix to the primary instantiated local generic type name while preserving suffixes for local types used as type arguments.
Add stable test/go coverage for package and command-line main cases, and remove the now-fixed typeparam/nested.go GOROOT xfails.
GOROOT CI
Full GOROOT CI is disabled for normal PRs (workflow_dispatch only) and is too slow for routine validation. This PR adds test/go coverage so the regression remains covered when GOROOT CI is not running.
Targeted GOROOT commands run locally with $(go env GOROOT) = /opt/homebrew/Cellar/go@1.24/1.24.11/libexec:
go test ./test/goroot -run TestGoRoot -count=1 -timeout=10m -args -goroot "$(go env GOROOT)" -dirs typeparam -case '^typeparam/nested\.go$' -xfail /tmp/llgo-no-xfail.yaml -directive-mode legacy
go test ./test/goroot -run TestGoRoot -count=1 -timeout=10m -args -goroot "$(go env GOROOT)" -dirs typeparam -case '^typeparam/nested\.go$' -directive-mode legacy
Tests
go test ./test/go -run 'TestGeneric(LocalRuntimeTypesIncludeOuterArgs|NestedLocalRuntimeTypeNames)' -count=1
go run ./cmd/llgo test -run 'TestGeneric(LocalRuntimeTypesIncludeOuterArgs|NestedLocalRuntimeTypeNames)' ./test/go
go test ./cl -run 'TestGenericLocalTypePatch|TestGenericLocalTypePatchHelperBranches' -count=1
go test ./ssa/abi -count=1
go test ./test/goroot -run TestGoRoot -count=1 -timeout=10m -args -goroot "$(go env GOROOT)" -dirs typeparam -case '^typeparam/nested\.go$' -xfail /tmp/llgo-no-xfail.yaml -directive-mode legacy
go test ./test/goroot -run TestGoRoot -count=1 -timeout=10m -args -goroot "$(go env GOROOT)" -dirs typeparam -case '^typeparam/nested\.go$' -directive-mode legacy
go test ./cl -count=1
Correction: per branch policy, the temporary xgo-dev/llgo:codex/goroot-typeparam-coverage ref used for manual workflow dispatch has been deleted. The PR head remains cpunion/llgo:codex/goroot-typeparam-coverage. Normal PR CI remains attached to this draft PR; manual GOROOT workflow_dispatch cannot be run without an upstream ref.
Clarified the remaining typeparam goroot xfail reasons in test/goroot/xfail.yaml.
No compiler/runtime code change in this follow-up because the remaining failures reproduced as non-typeparam roots.
Case classification:
Covered by the existing PR fix: typeparam/nested.go passes locally with xfail disabled on Go 1.24.11 and Go 1.25.7.
Left xfailed, not mixed into this PR: typeparam/chans.go and typeparam/orderedmap.go reproduce as a non-generic select/unbuffered-channel issue.
Left xfailed, not mixed into this PR: typeparam/issue51521.go and typeparam/mdempsky/16.go reproduce as a non-generic nil-deref panic value not implementing error/runtime.Error.
Left xfailed, not mixed into this PR: typeparam/mdempsky/15.go reproduces as //go:nointerface methods still satisfying interfaces, including a non-generic reduced case.
Left xfailed, not mixed into this PR: typeparam/typeswitch5.go has the expected type-switch behavior, but differs only in println float exponent formatting (+9.000000e+00 vs +9.000000e+000).
Validation run locally:
go test ./test/goroot -run 'Test.*XFail|Test.*Runner|TestGoRootRunCases' -count=1
go test ./test/go -count=1
go test ./cl -run 'TestGenericLocalTypePatchHelpers|TestGenericLocalTypePatchHelperBranches|TestFuncName_NestedClosureInMethodIncludesRecv|TestFuncName_TopLevelAndPlainClosureNoRecv|TestFuncName_ThunkAndBoundStillCarryRecv' -count=1
go test ./ssa ./ssa/abi -run 'TestHasTypeParam|TestTypeName_DetachedLocalScopeUsesPosition|TestTypeName_GenericLocal|TestTypeName_Local|TestTypeName' -count=1
Go 1.24.11 goroot sanity with default xfail for top-level listed typeparam cases: pass
Go 1.24.11 goroot sanity with default xfail for typeparam/mdempsky/{15,16}.go in runlike mode: pass
Go 1.25.7 goroot sanity with default xfail for top-level listed typeparam cases: pass
Go 1.25.7 goroot sanity with default xfail for typeparam/mdempsky/{15,16}.go in runlike mode: pass
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
command-line-argumentsbecomesmain).test/gocoverage for package and command-linemaincases, and remove the now-fixedtypeparam/nested.goGOROOT xfails.GOROOT CI
Full GOROOT CI is disabled for normal PRs (
workflow_dispatchonly) and is too slow for routine validation. This PR addstest/gocoverage so the regression remains covered when GOROOT CI is not running.A manual GOROOT workflow was dispatched on an upstream branch with the same head SHA because GitHub rejected dispatching
refs/pull/1879/headdirectly: https://github.com/xgo-dev/llgo/actions/runs/26263992315Targeted GOROOT commands run locally with
$(go env GOROOT)=/opt/homebrew/Cellar/go@1.24/1.24.11/libexec:Tests