From 8b300ffa7a5e8ed605fd8753b483933318dc8fea Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 30 Oct 2025 13:48:19 +0100 Subject: [PATCH] Rust: Type inference timing experiment --- .../codeql-suites/rust-code-quality-extended.qls | 5 +++-- rust/ql/src/codeql-suites/rust-code-quality.qls | 5 +++-- rust/ql/src/codeql-suites/rust-code-scanning.qls | 6 +++--- .../codeql-suites/rust-security-and-quality.qls | 6 +++--- .../codeql-suites/rust-security-experimental.qls | 6 +++--- .../src/codeql-suites/rust-security-extended.qls | 6 +++--- .../queries/diagnostics/TypeInferenceWarmup.ql | 16 ++++++++++++++++ 7 files changed, 34 insertions(+), 16 deletions(-) create mode 100644 rust/ql/src/queries/diagnostics/TypeInferenceWarmup.ql diff --git a/rust/ql/src/codeql-suites/rust-code-quality-extended.qls b/rust/ql/src/codeql-suites/rust-code-quality-extended.qls index 1ee85cae856c..5cfb2db3b864 100644 --- a/rust/ql/src/codeql-suites/rust-code-quality-extended.qls +++ b/rust/ql/src/codeql-suites/rust-code-quality-extended.qls @@ -1,3 +1,4 @@ - queries: . -- apply: code-quality-extended-selectors.yml - from: codeql/suite-helpers +- include: + tags contain: + - type-inference-warmup diff --git a/rust/ql/src/codeql-suites/rust-code-quality.qls b/rust/ql/src/codeql-suites/rust-code-quality.qls index 2074f9378cfd..5cfb2db3b864 100644 --- a/rust/ql/src/codeql-suites/rust-code-quality.qls +++ b/rust/ql/src/codeql-suites/rust-code-quality.qls @@ -1,3 +1,4 @@ - queries: . -- apply: code-quality-selectors.yml - from: codeql/suite-helpers +- include: + tags contain: + - type-inference-warmup diff --git a/rust/ql/src/codeql-suites/rust-code-scanning.qls b/rust/ql/src/codeql-suites/rust-code-scanning.qls index 8e681600bea3..5cfb2db3b864 100644 --- a/rust/ql/src/codeql-suites/rust-code-scanning.qls +++ b/rust/ql/src/codeql-suites/rust-code-scanning.qls @@ -1,4 +1,4 @@ -- description: Standard Code Scanning queries for Rust - queries: . -- apply: code-scanning-selectors.yml - from: codeql/suite-helpers +- include: + tags contain: + - type-inference-warmup diff --git a/rust/ql/src/codeql-suites/rust-security-and-quality.qls b/rust/ql/src/codeql-suites/rust-security-and-quality.qls index f60eb48a8b1c..5cfb2db3b864 100644 --- a/rust/ql/src/codeql-suites/rust-security-and-quality.qls +++ b/rust/ql/src/codeql-suites/rust-security-and-quality.qls @@ -1,4 +1,4 @@ -- description: Security-and-quality queries for Rust - queries: . -- apply: security-and-quality-selectors.yml - from: codeql/suite-helpers +- include: + tags contain: + - type-inference-warmup diff --git a/rust/ql/src/codeql-suites/rust-security-experimental.qls b/rust/ql/src/codeql-suites/rust-security-experimental.qls index 2050342b6a0d..5cfb2db3b864 100644 --- a/rust/ql/src/codeql-suites/rust-security-experimental.qls +++ b/rust/ql/src/codeql-suites/rust-security-experimental.qls @@ -1,4 +1,4 @@ -- description: Extended and experimental security queries for Rust - queries: . -- apply: security-experimental-selectors.yml - from: codeql/suite-helpers +- include: + tags contain: + - type-inference-warmup diff --git a/rust/ql/src/codeql-suites/rust-security-extended.qls b/rust/ql/src/codeql-suites/rust-security-extended.qls index daef2434792b..5cfb2db3b864 100644 --- a/rust/ql/src/codeql-suites/rust-security-extended.qls +++ b/rust/ql/src/codeql-suites/rust-security-extended.qls @@ -1,4 +1,4 @@ -- description: Security-extended queries for Rust - queries: . -- apply: security-extended-selectors.yml - from: codeql/suite-helpers +- include: + tags contain: + - type-inference-warmup diff --git a/rust/ql/src/queries/diagnostics/TypeInferenceWarmup.ql b/rust/ql/src/queries/diagnostics/TypeInferenceWarmup.ql new file mode 100644 index 000000000000..a5f50c553e1b --- /dev/null +++ b/rust/ql/src/queries/diagnostics/TypeInferenceWarmup.ql @@ -0,0 +1,16 @@ +/** + * @name Warmup type inference cache + * @description Exercises the type inference implementation to make sure that it is in the cache. + * @kind problem + * @problem.severity recommendation + * @id rust/diagnostics/type-inference-warmup + * @tags type-inference-warmup + */ + +import rust +import codeql.rust.internal.Type +import codeql.rust.internal.TypeInference + +from UnitType t +where t = inferType(_) +select t, "Dummy result"