Skip to content

Commit a21dfc9

Browse files
authored
Merge pull request #18306 from github/go/1.24
Go: Support 1.24
2 parents 654c6bf + 7c83b0e commit a21dfc9

27 files changed

+570
-487
lines changed

MODULE.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ use_repo(
243243
)
244244

245245
go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
246-
go_sdk.download(version = "1.23.1")
246+
go_sdk.download(version = "1.24.0")
247247

248248
go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps")
249249
go_deps.from_file(go_mod = "//go/extractor:go.mod")

go/actions/test/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ inputs:
44
go-test-version:
55
description: Which Go version to use for running the tests
66
required: false
7-
default: "~1.23.1"
7+
default: "~1.24.0"
88
run-code-checks:
99
description: Whether to run formatting, code and qhelp generation checks
1010
required: false

go/extractor/autobuilder/build-environment.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
)
1313

1414
var minGoVersion = util.NewSemVer("1.11")
15-
var maxGoVersion = util.NewSemVer("1.23")
15+
var maxGoVersion = util.NewSemVer("1.24")
1616

1717
type versionInfo struct {
1818
goModVersion util.SemVer // The version of Go found in the go directive in the `go.mod` file.

go/extractor/extractor.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,12 @@ func extractObjects(tw *trap.Writer, scope *types.Scope, scopeLabel trap.Label)
477477
}
478478
// Populate type parameter parents for named types.
479479
if typeNameObj, ok := obj.(*types.TypeName); ok {
480+
// `types.TypeName` represents a type with a name: a defined
481+
// type, an alias type, a type parameter, or a predeclared
482+
// type such as `int` or `error`. We can distinguish these
483+
// using `typeNameObj.Type()`, except that we need to be
484+
// careful with alias types because before Go 1.24 they would
485+
// return the underlying type.
480486
if tp, ok := typeNameObj.Type().(*types.Named); ok && !typeNameObj.IsAlias() {
481487
populateTypeParamParents(tp.TypeParams(), obj)
482488
} else if tp, ok := typeNameObj.Type().(*types.Alias); ok {

go/extractor/go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
module github.com/github/codeql-go/extractor
22

3-
go 1.23
3+
go 1.24
44

5-
toolchain go1.23.1
5+
toolchain go1.24.0
66

77
// when updating this, run
88
// bazel run @rules_go//go -- mod tidy

go/extractor/project/project.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ func findGoModFiles(root string) []string {
193193
}
194194

195195
// A regular expression for the Go toolchain version syntax.
196-
var toolchainVersionRe *regexp.Regexp = regexp.MustCompile(`(?m)^([0-9]+\.[0-9]+\.[0-9]+)$`)
196+
var toolchainVersionRe *regexp.Regexp = regexp.MustCompile(`(?m)^([0-9]+\.[0-9]+(\.[0-9]+|rc[0-9]+))$`)
197197

198198
// Returns true if the `go.mod` file specifies a Go language version, that version is `1.21` or greater, and
199199
// there is no `toolchain` directive, and the Go language version is not a valid toolchain version.

go/ql/test/library-tests/semmle/go/Function/TypeParamType.expected

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,18 +63,62 @@ numberOfTypeParameters
6363
| internal/bytealg.HashStrRev | 0 | T | interface { string \| []uint8 } |
6464
| internal/bytealg.IndexRabinKarp | 0 | T | interface { string \| []uint8 } |
6565
| internal/bytealg.LastIndexRabinKarp | 0 | T | interface { string \| []uint8 } |
66+
| internal/poll.ignoringEINTR2 | 0 | T | interface { } |
6667
| internal/runtime/atomic.Pointer.CompareAndSwap | 0 | T | interface { } |
6768
| internal/runtime/atomic.Pointer.CompareAndSwapNoWB | 0 | T | interface { } |
6869
| internal/runtime/atomic.Pointer.Load | 0 | T | interface { } |
6970
| internal/runtime/atomic.Pointer.Store | 0 | T | interface { } |
7071
| internal/runtime/atomic.Pointer.StoreNoWB | 0 | T | interface { } |
72+
| internal/sync.HashTrieMap.All | 0 | K | comparable |
73+
| internal/sync.HashTrieMap.All | 1 | V | interface { } |
74+
| internal/sync.HashTrieMap.CompareAndDelete | 0 | K | comparable |
75+
| internal/sync.HashTrieMap.CompareAndDelete | 1 | V | interface { } |
76+
| internal/sync.HashTrieMap.CompareAndSwap | 0 | K | comparable |
77+
| internal/sync.HashTrieMap.CompareAndSwap | 1 | V | interface { } |
78+
| internal/sync.HashTrieMap.Delete | 0 | K | comparable |
79+
| internal/sync.HashTrieMap.Load | 0 | K | comparable |
80+
| internal/sync.HashTrieMap.Load | 1 | V | interface { } |
81+
| internal/sync.HashTrieMap.LoadAndDelete | 0 | K | comparable |
82+
| internal/sync.HashTrieMap.LoadAndDelete | 1 | V | interface { } |
83+
| internal/sync.HashTrieMap.LoadOrStore | 0 | K | comparable |
84+
| internal/sync.HashTrieMap.LoadOrStore | 1 | V | interface { } |
85+
| internal/sync.HashTrieMap.Range | 0 | K | comparable |
86+
| internal/sync.HashTrieMap.Range | 1 | V | interface { } |
87+
| internal/sync.HashTrieMap.Store | 0 | K | comparable |
88+
| internal/sync.HashTrieMap.Store | 1 | V | interface { } |
89+
| internal/sync.HashTrieMap.Swap | 0 | K | comparable |
90+
| internal/sync.HashTrieMap.Swap | 1 | V | interface { } |
91+
| internal/sync.HashTrieMap.find | 0 | K | comparable |
92+
| internal/sync.HashTrieMap.find | 1 | V | interface { } |
93+
| internal/sync.HashTrieMap.iter | 0 | K | comparable |
94+
| internal/sync.HashTrieMap.iter | 1 | V | interface { } |
95+
| internal/sync.entry | 0 | K | comparable |
96+
| internal/sync.entry | 1 | V | interface { } |
97+
| internal/sync.entry.compareAndDelete | 0 | K | comparable |
98+
| internal/sync.entry.compareAndDelete | 1 | V | interface { } |
99+
| internal/sync.entry.compareAndSwap | 0 | K | comparable |
100+
| internal/sync.entry.compareAndSwap | 1 | V | interface { } |
101+
| internal/sync.entry.loadAndDelete | 0 | K | comparable |
102+
| internal/sync.entry.loadAndDelete | 1 | V | interface { } |
103+
| internal/sync.entry.lookup | 0 | K | comparable |
104+
| internal/sync.entry.lookup | 1 | V | interface { } |
105+
| internal/sync.entry.lookupWithValue | 0 | K | comparable |
106+
| internal/sync.entry.lookupWithValue | 1 | V | interface { } |
107+
| internal/sync.entry.swap | 0 | K | comparable |
108+
| internal/sync.entry.swap | 1 | V | interface { } |
109+
| internal/sync.newEntryNode | 0 | K | comparable |
110+
| internal/sync.newEntryNode | 1 | V | interface { } |
71111
| iter.Pull | 0 | V | interface { } |
72112
| iter.Pull2 | 0 | K | interface { } |
73113
| iter.Pull2 | 1 | V | interface { } |
74114
| iter.Seq | 0 | V | interface { } |
75115
| iter.Seq2 | 0 | K | interface { } |
76116
| iter.Seq2 | 1 | V | interface { } |
117+
| os.doInRoot | 0 | T | interface { } |
118+
| os.ignoringEINTR2 | 0 | T | interface { } |
77119
| reflect.rangeNum | 1 | N | interface { int64 \| uint64 } |
120+
| runtime.AddCleanup | 0 | T | interface { } |
121+
| runtime.AddCleanup | 1 | S | interface { } |
78122
| runtime.fandbits | 0 | F | floaty |
79123
| runtime.fmax | 0 | F | floaty |
80124
| runtime.fmin | 0 | F | floaty |

go/ql/test/library-tests/semmle/go/Types/Aliases.expected

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@ entities
1414
| aliases.go | aliases.go:22:6:22:6 | T | 1 | aliases.go:19:6:19:7 | S3 |
1515
| aliases.go | aliases.go:25:6:25:6 | H | 1 | file://:0:0:0:0 | signature type |
1616
| aliases.go | aliases.go:25:8:25:11 | Afs3 | 1 | aliases.go:19:6:19:7 | S3 |
17+
| aliases.go | aliases.go:29:6:29:11 | MyType | 1 | aliases.go:29:6:29:11 | MyType |
18+
| aliases.go | aliases.go:29:13:29:19 | MyTypeT | 1 | file://:0:0:0:0 | type parameter type |
19+
| aliases.go | aliases.go:29:34:29:34 | x | 1 | file://:0:0:0:0 | type parameter type |
20+
| aliases.go | aliases.go:32:6:32:16 | MyTypeAlias | 1 | aliases.go:29:6:29:11 | MyType |
21+
| aliases.go | aliases.go:32:18:32:29 | MyTypeAliasT | 1 | file://:0:0:0:0 | type parameter type |
22+
| aliases.go | aliases.go:34:6:34:19 | useMyTypeAlias | 1 | file://:0:0:0:0 | signature type |
23+
| aliases.go | aliases.go:34:21:34:21 | a | 1 | aliases.go:29:6:29:11 | MyType |
24+
| aliases.go | aliases.go:35:2:35:2 | b | 1 | aliases.go:29:6:29:11 | MyType |
1725
#select
1826
| F | func(struct { x int }) int |
1927
| G | func(struct { x int }) int |
Lines changed: 60 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,60 @@
1-
| aliases.go:6:26:6:26 | x | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
2-
| aliases.go:8:26:8:26 | x | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
3-
| aliases.go:19:17:19:17 | x | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
4-
| cyclic.go:4:3:4:3 | s | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
5-
| cyclic.go:8:3:8:3 | u | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
6-
| cyclic.go:9:2:9:2 | f | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
7-
| cyclic.go:13:2:13:2 | t | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
8-
| cyclic.go:17:2:17:2 | s | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
9-
| depth.go:6:2:6:2 | b | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
10-
| depth.go:7:2:7:2 | c | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
11-
| depth.go:11:2:11:2 | f | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
12-
| depth.go:15:2:15:2 | d | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
13-
| depth.go:19:2:19:2 | f | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
14-
| embedded.go:4:2:4:2 | A | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
15-
| embedded.go:8:3:8:5 | Baz | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
16-
| embedded.go:12:2:12:4 | Qux | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
17-
| embedded.go:13:2:13:4 | Baz | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
18-
| generic.go:4:2:4:11 | valueField | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
19-
| generic.go:5:2:5:13 | pointerField | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
20-
| generic.go:6:2:6:11 | arrayField | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
21-
| generic.go:7:2:7:11 | sliceField | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
22-
| generic.go:8:2:8:9 | mapField | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
23-
| generic.go:12:2:12:13 | pointerField | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
24-
| generic.go:16:2:16:5 | root | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
25-
| generic.go:20:2:20:12 | structField | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
26-
| generic.go:21:2:21:9 | mapField | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
27-
| generic.go:25:2:25:12 | structField | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
28-
| generic.go:29:2:29:13 | pointerField | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
29-
| main.go:18:7:18:15 | NameClash | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
30-
| pkg1/embedding.go:19:23:19:26 | base | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
31-
| pkg1/embedding.go:22:27:22:30 | base | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
32-
| pkg1/embedding.go:25:24:25:31 | embedder | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
33-
| pkg1/embedding.go:28:24:28:31 | embedder | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
34-
| pkg1/embedding.go:36:2:36:5 | base | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
35-
| pkg1/embedding.go:37:2:37:2 | f | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
36-
| pkg1/promotedStructs.go:5:2:5:7 | SField | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
37-
| pkg1/promotedStructs.go:14:2:14:7 | PField | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
38-
| pkg1/promotedStructs.go:22:22:22:22 | S | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
39-
| pkg1/promotedStructs.go:25:22:25:22 | P | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
40-
| pkg1/tst.go:6:2:6:2 | f | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
41-
| pkg1/tst.go:7:2:7:4 | Foo | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
42-
| pkg1/tst.go:8:2:8:4 | Bar | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
43-
| pkg1/tst.go:12:2:12:4 | Foo | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
44-
| pkg1/tst.go:13:2:13:4 | Bar | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
45-
| pkg1/tst.go:17:3:17:5 | Foo | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
46-
| pkg1/tst.go:18:3:18:5 | Bar | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
47-
| pkg1/tst.go:22:3:22:5 | Foo | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
48-
| pkg1/tst.go:23:2:23:4 | Bar | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
49-
| pkg1/tst.go:27:2:27:4 | val | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
50-
| pkg1/tst.go:28:2:28:5 | flag | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
51-
| pkg1/tst.go:32:2:32:5 | flag | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
52-
| pkg1/tst.go:62:7:62:15 | NameClash | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg1 |
53-
| pkg2/tst.go:4:2:4:2 | g | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg2 |
54-
| pkg2/tst.go:8:2:8:2 | g | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg2 |
55-
| pkg2/tst.go:17:2:17:8 | NCField | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types/pkg2 |
56-
| struct_tags.go:4:2:4:7 | field1 | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
57-
| struct_tags.go:5:2:5:7 | field2 | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
58-
| struct_tags.go:9:2:9:7 | field1 | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
59-
| struct_tags.go:10:2:10:7 | field2 | package github.com/github/codeql-go/ql/test/library-tests/semmle/go/Types |
1+
| aliases.go:6:26:6:26 | x | package codeql-go-types |
2+
| aliases.go:8:26:8:26 | x | package codeql-go-types |
3+
| aliases.go:19:17:19:17 | x | package codeql-go-types |
4+
| aliases.go:29:34:29:34 | x | package codeql-go-types |
5+
| cyclic.go:4:3:4:3 | s | package codeql-go-types |
6+
| cyclic.go:8:3:8:3 | u | package codeql-go-types |
7+
| cyclic.go:9:2:9:2 | f | package codeql-go-types |
8+
| cyclic.go:13:2:13:2 | t | package codeql-go-types |
9+
| cyclic.go:17:2:17:2 | s | package codeql-go-types |
10+
| depth.go:6:2:6:2 | b | package codeql-go-types |
11+
| depth.go:7:2:7:2 | c | package codeql-go-types |
12+
| depth.go:11:2:11:2 | f | package codeql-go-types |
13+
| depth.go:15:2:15:2 | d | package codeql-go-types |
14+
| depth.go:19:2:19:2 | f | package codeql-go-types |
15+
| embedded.go:4:2:4:2 | A | package codeql-go-types |
16+
| embedded.go:8:3:8:5 | Baz | package codeql-go-types |
17+
| embedded.go:12:2:12:4 | Qux | package codeql-go-types |
18+
| embedded.go:13:2:13:4 | Baz | package codeql-go-types |
19+
| generic.go:4:2:4:11 | valueField | package codeql-go-types |
20+
| generic.go:5:2:5:13 | pointerField | package codeql-go-types |
21+
| generic.go:6:2:6:11 | arrayField | package codeql-go-types |
22+
| generic.go:7:2:7:11 | sliceField | package codeql-go-types |
23+
| generic.go:8:2:8:9 | mapField | package codeql-go-types |
24+
| generic.go:12:2:12:13 | pointerField | package codeql-go-types |
25+
| generic.go:16:2:16:5 | root | package codeql-go-types |
26+
| generic.go:20:2:20:12 | structField | package codeql-go-types |
27+
| generic.go:21:2:21:9 | mapField | package codeql-go-types |
28+
| generic.go:25:2:25:12 | structField | package codeql-go-types |
29+
| generic.go:29:2:29:13 | pointerField | package codeql-go-types |
30+
| main.go:18:7:18:15 | NameClash | package codeql-go-types |
31+
| pkg1/embedding.go:19:23:19:26 | base | package codeql-go-types/pkg1 |
32+
| pkg1/embedding.go:22:27:22:30 | base | package codeql-go-types/pkg1 |
33+
| pkg1/embedding.go:25:24:25:31 | embedder | package codeql-go-types/pkg1 |
34+
| pkg1/embedding.go:28:24:28:31 | embedder | package codeql-go-types/pkg1 |
35+
| pkg1/embedding.go:36:2:36:5 | base | package codeql-go-types/pkg1 |
36+
| pkg1/embedding.go:37:2:37:2 | f | package codeql-go-types/pkg1 |
37+
| pkg1/promotedStructs.go:5:2:5:7 | SField | package codeql-go-types/pkg1 |
38+
| pkg1/promotedStructs.go:14:2:14:7 | PField | package codeql-go-types/pkg1 |
39+
| pkg1/promotedStructs.go:22:22:22:22 | S | package codeql-go-types/pkg1 |
40+
| pkg1/promotedStructs.go:25:22:25:22 | P | package codeql-go-types/pkg1 |
41+
| pkg1/tst.go:6:2:6:2 | f | package codeql-go-types/pkg1 |
42+
| pkg1/tst.go:7:2:7:4 | Foo | package codeql-go-types/pkg1 |
43+
| pkg1/tst.go:8:2:8:4 | Bar | package codeql-go-types/pkg1 |
44+
| pkg1/tst.go:12:2:12:4 | Foo | package codeql-go-types/pkg1 |
45+
| pkg1/tst.go:13:2:13:4 | Bar | package codeql-go-types/pkg1 |
46+
| pkg1/tst.go:17:3:17:5 | Foo | package codeql-go-types/pkg1 |
47+
| pkg1/tst.go:18:3:18:5 | Bar | package codeql-go-types/pkg1 |
48+
| pkg1/tst.go:22:3:22:5 | Foo | package codeql-go-types/pkg1 |
49+
| pkg1/tst.go:23:2:23:4 | Bar | package codeql-go-types/pkg1 |
50+
| pkg1/tst.go:27:2:27:4 | val | package codeql-go-types/pkg1 |
51+
| pkg1/tst.go:28:2:28:5 | flag | package codeql-go-types/pkg1 |
52+
| pkg1/tst.go:32:2:32:5 | flag | package codeql-go-types/pkg1 |
53+
| pkg1/tst.go:62:7:62:15 | NameClash | package codeql-go-types/pkg1 |
54+
| pkg2/tst.go:4:2:4:2 | g | package codeql-go-types/pkg2 |
55+
| pkg2/tst.go:8:2:8:2 | g | package codeql-go-types/pkg2 |
56+
| pkg2/tst.go:17:2:17:8 | NCField | package codeql-go-types/pkg2 |
57+
| struct_tags.go:4:2:4:7 | field1 | package codeql-go-types |
58+
| struct_tags.go:5:2:5:7 | field2 | package codeql-go-types |
59+
| struct_tags.go:9:2:9:7 | field1 | package codeql-go-types |
60+
| struct_tags.go:10:2:10:7 | field2 | package codeql-go-types |

0 commit comments

Comments
 (0)