mirror of
https://github.com/github/codeql.git
synced 2026-04-23 15:55:18 +02:00
Rust: revert TupleStructPat.toString improvements
This commit is contained in:
@@ -72,7 +72,7 @@ repos:
|
||||
|
||||
- id: rust-codegen
|
||||
name: Run Rust checked in code generation
|
||||
files: ^misc/codegen/|^rust/(schema.py$|codegen/|.*/generated/|ql/lib/(rust\.dbscheme$|codeql/rust/elements)|\.generated.list)
|
||||
files: ^misc/codegen/|^rust/(prefix\.dbscheme|schema/|codegen/|.*/generated/|ql/lib/(rust\.dbscheme$|codeql/rust/elements)|\.generated.list)
|
||||
language: system
|
||||
entry: bazel run //rust/codegen -- --quiet
|
||||
pass_filenames: false
|
||||
|
||||
@@ -642,5 +642,40 @@ namespace Semmle.Extraction.CSharp
|
||||
/// </summary>
|
||||
public static IEnumerable<AnnotatedTypeSymbol> GetAnnotatedTypeArguments(this INamedTypeSymbol symbol) =>
|
||||
symbol.TypeArguments.Zip(symbol.TypeArgumentNullableAnnotations, (t, a) => new AnnotatedTypeSymbol(t, a));
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if the symbol is public, protected or protected internal.
|
||||
/// </summary>
|
||||
public static bool IsPublicOrProtected(this ISymbol symbol) =>
|
||||
symbol.DeclaredAccessibility == Accessibility.Public
|
||||
|| symbol.DeclaredAccessibility == Accessibility.Protected
|
||||
|| symbol.DeclaredAccessibility == Accessibility.ProtectedOrInternal;
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if the given symbol should be extracted.
|
||||
/// </summary>
|
||||
public static bool ShouldExtractSymbol(this ISymbol symbol)
|
||||
{
|
||||
// Extract all source symbols and public/protected metadata symbols.
|
||||
if (symbol.Locations.Any(x => !x.IsInMetadata) || symbol.IsPublicOrProtected())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (symbol is IMethodSymbol method)
|
||||
{
|
||||
return method.ExplicitInterfaceImplementations.Any(m => m.ContainingType.ShouldExtractSymbol());
|
||||
}
|
||||
if (symbol is IPropertySymbol property)
|
||||
{
|
||||
return property.ExplicitInterfaceImplementations.Any(m => m.ContainingType.ShouldExtractSymbol());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the symbols that should be extracted.
|
||||
/// </summary>
|
||||
public static IEnumerable<T> ExtractionCandidates<T>(this IEnumerable<T> symbols) where T : ISymbol =>
|
||||
symbols.Where(symbol => symbol.ShouldExtractSymbol());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ namespace Semmle.Extraction.CSharp.Entities
|
||||
}
|
||||
}
|
||||
|
||||
if (Symbol.OverriddenMethod is not null)
|
||||
if (Symbol.OverriddenMethod is not null && Symbol.OverriddenMethod.ShouldExtractSymbol())
|
||||
{
|
||||
trapFile.overrides(this, Method.Create(Context, Symbol.OverriddenMethod));
|
||||
}
|
||||
|
||||
@@ -225,7 +225,7 @@ namespace Semmle.Extraction.CSharp.Entities
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called to extract all members and nested types.
|
||||
/// Called to extract members and nested types.
|
||||
/// This is called on each member of a namespace,
|
||||
/// in either source code or an assembly.
|
||||
/// </summary>
|
||||
@@ -236,7 +236,7 @@ namespace Semmle.Extraction.CSharp.Entities
|
||||
Context.BindComments(this, l);
|
||||
}
|
||||
|
||||
foreach (var member in Symbol.GetMembers())
|
||||
foreach (var member in Symbol.GetMembers().ExtractionCandidates())
|
||||
{
|
||||
switch (member.Kind)
|
||||
{
|
||||
@@ -262,16 +262,16 @@ namespace Semmle.Extraction.CSharp.Entities
|
||||
|
||||
var members = new List<ISymbol>();
|
||||
|
||||
foreach (var member in Symbol.GetMembers())
|
||||
foreach (var member in Symbol.GetMembers().ExtractionCandidates())
|
||||
members.Add(member);
|
||||
foreach (var member in Symbol.GetTypeMembers())
|
||||
foreach (var member in Symbol.GetTypeMembers().ExtractionCandidates())
|
||||
members.Add(member);
|
||||
|
||||
// Mono extractor puts all BASE interface members as members of the current interface.
|
||||
|
||||
if (Symbol.TypeKind == TypeKind.Interface)
|
||||
{
|
||||
foreach (var baseInterface in Symbol.Interfaces)
|
||||
foreach (var baseInterface in Symbol.Interfaces.ExtractionCandidates())
|
||||
{
|
||||
foreach (var member in baseInterface.GetMembers())
|
||||
members.Add(member);
|
||||
@@ -288,7 +288,7 @@ namespace Semmle.Extraction.CSharp.Entities
|
||||
if (Symbol.BaseType is not null)
|
||||
Create(Context, Symbol.BaseType).PopulateGenerics();
|
||||
|
||||
foreach (var i in Symbol.Interfaces)
|
||||
foreach (var i in Symbol.Interfaces.ExtractionCandidates())
|
||||
{
|
||||
Create(Context, i).PopulateGenerics();
|
||||
}
|
||||
|
||||
@@ -269,7 +269,7 @@ namespace Semmle.Extraction.CSharp
|
||||
AnalyseNamespace(cx, memberNamespace);
|
||||
}
|
||||
|
||||
foreach (var memberType in ns.GetTypeMembers())
|
||||
foreach (var memberType in ns.GetTypeMembers().ExtractionCandidates())
|
||||
{
|
||||
Entities.Type.Create(cx, memberType).ExtractRecursive();
|
||||
}
|
||||
|
||||
@@ -549,7 +549,6 @@ namespace Semmle.Extraction.CSharp
|
||||
compilerArguments.CompilationOptions
|
||||
.WithAssemblyIdentityComparer(DesktopAssemblyIdentityComparer.Default)
|
||||
.WithStrongNameProvider(new DesktopStrongNameProvider(compilerArguments.KeyFileSearchPaths))
|
||||
.WithMetadataImportOptions(MetadataImportOptions.All)
|
||||
);
|
||||
},
|
||||
(compilation, options) => analyser.EndInitialize(compilerArguments, options, compilation, cwd, args),
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
category: minorAnalysis
|
||||
---
|
||||
* Only extract *public* and *protected* members from reference assemblies. This yields an approximate average speed-up of around 10% for extraction and query execution. Custom MaD rows using `Field`-based summaries may need to be changed to `SyntheticField`-based flows if they reference private fields.
|
||||
@@ -21,7 +21,6 @@
|
||||
| Int32 | Decimal |
|
||||
| Int32 | Index |
|
||||
| Int32 | Int128 |
|
||||
| Int32 | MetadataToken |
|
||||
| Int32 | NFloat |
|
||||
| Int64 | Decimal |
|
||||
| Int64 | Int128 |
|
||||
@@ -29,7 +28,6 @@
|
||||
| IntPtr | Int128 |
|
||||
| IntPtr | NFloat |
|
||||
| Memory`1 | ReadOnlyMemory<T> |
|
||||
| MetadataToken | Int32 |
|
||||
| NFloat | Double |
|
||||
| SByte | Decimal |
|
||||
| SByte | Half |
|
||||
@@ -59,4 +57,3 @@
|
||||
| UIntPtr | Int128 |
|
||||
| UIntPtr | NFloat |
|
||||
| UIntPtr | UInt128 |
|
||||
| UnixFileMode | Nullable<UnixFileMode> |
|
||||
|
||||
@@ -183,8 +183,6 @@
|
||||
| IReadOnlyList<T4> | dynamic |
|
||||
| Int16[] | Object |
|
||||
| Int16[] | dynamic |
|
||||
| Int32[,] | Object |
|
||||
| Int32[,] | dynamic |
|
||||
| Int32[] | Object |
|
||||
| Int32[] | dynamic |
|
||||
| Int64[] | Object |
|
||||
@@ -223,8 +221,6 @@
|
||||
| T5 | C1 |
|
||||
| T5 | Object |
|
||||
| T5 | dynamic |
|
||||
| UInt16[][] | Object |
|
||||
| UInt16[][] | dynamic |
|
||||
| UInt32[] | Object |
|
||||
| UInt32[] | dynamic |
|
||||
| UInt64[] | Object |
|
||||
@@ -283,7 +279,6 @@
|
||||
| null | IReadOnlyList<T3> |
|
||||
| null | IReadOnlyList<T4> |
|
||||
| null | Int16[] |
|
||||
| null | Int32[,] |
|
||||
| null | Int32[] |
|
||||
| null | Int64[] |
|
||||
| null | Object |
|
||||
@@ -294,7 +289,6 @@
|
||||
| null | T4 |
|
||||
| null | T4[] |
|
||||
| null | T5 |
|
||||
| null | UInt16[][] |
|
||||
| null | UInt32[] |
|
||||
| null | UInt64[] |
|
||||
| null | dynamic |
|
||||
|
||||
@@ -1,68 +1,33 @@
|
||||
type
|
||||
| file://:0:0:0:0 | delegate* default<A,B> | B | DefaultCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* default<B,A> | A | DefaultCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* default<Byte ref,Void> | Void | DefaultCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* default<Int32 ref,Object out,Int32 in,Int32 ref> | ref int | DefaultCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* default<Int32 ref,Object out,Int32 ref readonly> | readonly int | DefaultCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* default<Int32*,Void*> | Void* | DefaultCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* default<Int32> | int | DefaultCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* default<IntPtr,Byte ref,PortableTailCallFrame*,Void> | Void | DefaultCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* default<Object,Void> | Void | DefaultCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* default<T,Int32> | int | DefaultCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* default<Void*,Int32*> | int* | DefaultCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* default<Void*,Object> | object | DefaultCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* stdcall<Int32 ref,Object out,T,Void> | Void | StdCallCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | Void | UnmanagedCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Char*,IntPtr,Void> | Void | UnmanagedCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Int32,PosixSignal,Int32> | int | UnmanagedCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<IntPtr,Int32> | int | UnmanagedCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<IntPtr,Void> | Void | UnmanagedCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<NoGCRegionCallbackFinalizerWorkItem*,Void> | Void | UnmanagedCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Void*,Byte*,Void> | Void | UnmanagedCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | Void | UnmanagedCallingConvention |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Void> | Void | UnmanagedCallingConvention |
|
||||
unmanagedCallingConvention
|
||||
parameter
|
||||
| file://:0:0:0:0 | delegate* default<A,B> | 0 | file://:0:0:0:0 | | A |
|
||||
| file://:0:0:0:0 | delegate* default<B,A> | 0 | file://:0:0:0:0 | | B |
|
||||
| file://:0:0:0:0 | delegate* default<Byte ref,Void> | 0 | file://:0:0:0:0 | | ref byte! |
|
||||
| file://:0:0:0:0 | delegate* default<Int32 ref,Object out,Int32 in,Int32 ref> | 0 | file://:0:0:0:0 | | ref int! |
|
||||
| file://:0:0:0:0 | delegate* default<Int32 ref,Object out,Int32 in,Int32 ref> | 1 | file://:0:0:0:0 | `1 | out object? |
|
||||
| file://:0:0:0:0 | delegate* default<Int32 ref,Object out,Int32 in,Int32 ref> | 2 | file://:0:0:0:0 | `2 | readonly int! |
|
||||
| file://:0:0:0:0 | delegate* default<Int32 ref,Object out,Int32 ref readonly> | 0 | file://:0:0:0:0 | | ref int! |
|
||||
| file://:0:0:0:0 | delegate* default<Int32 ref,Object out,Int32 ref readonly> | 1 | file://:0:0:0:0 | `1 | out object? |
|
||||
| file://:0:0:0:0 | delegate* default<Int32*,Void*> | 0 | file://:0:0:0:0 | | int*! |
|
||||
| file://:0:0:0:0 | delegate* default<IntPtr,Byte ref,PortableTailCallFrame*,Void> | 0 | file://:0:0:0:0 | | IntPtr! |
|
||||
| file://:0:0:0:0 | delegate* default<IntPtr,Byte ref,PortableTailCallFrame*,Void> | 1 | file://:0:0:0:0 | `1 | ref byte! |
|
||||
| file://:0:0:0:0 | delegate* default<IntPtr,Byte ref,PortableTailCallFrame*,Void> | 2 | file://:0:0:0:0 | `2 | PortableTailCallFrame*! |
|
||||
| file://:0:0:0:0 | delegate* default<Object,Void> | 0 | file://:0:0:0:0 | | object |
|
||||
| file://:0:0:0:0 | delegate* default<T,Int32> | 0 | file://:0:0:0:0 | | T |
|
||||
| file://:0:0:0:0 | delegate* default<Void*,Int32*> | 0 | file://:0:0:0:0 | | Void*! |
|
||||
| file://:0:0:0:0 | delegate* default<Void*,Object> | 0 | file://:0:0:0:0 | | Void*! |
|
||||
| file://:0:0:0:0 | delegate* stdcall<Int32 ref,Object out,T,Void> | 0 | file://:0:0:0:0 | | ref int! |
|
||||
| file://:0:0:0:0 | delegate* stdcall<Int32 ref,Object out,T,Void> | 1 | file://:0:0:0:0 | `1 | out object? |
|
||||
| file://:0:0:0:0 | delegate* stdcall<Int32 ref,Object out,T,Void> | 2 | file://:0:0:0:0 | `2 | T |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | 0 | file://:0:0:0:0 | | byte*! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | 1 | file://:0:0:0:0 | `1 | int! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | 2 | file://:0:0:0:0 | `2 | byte! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | 3 | file://:0:0:0:0 | `3 | long! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | 4 | file://:0:0:0:0 | `4 | long! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | 5 | file://:0:0:0:0 | `5 | EVENT_FILTER_DESCRIPTOR*! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | 6 | file://:0:0:0:0 | `6 | Void*! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Char*,IntPtr,Void> | 0 | file://:0:0:0:0 | | char*! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Char*,IntPtr,Void> | 1 | file://:0:0:0:0 | `1 | IntPtr! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Int32,PosixSignal,Int32> | 0 | file://:0:0:0:0 | | int! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Int32,PosixSignal,Int32> | 1 | file://:0:0:0:0 | `1 | PosixSignal! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<IntPtr,Int32> | 0 | file://:0:0:0:0 | | IntPtr! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<IntPtr,Void> | 0 | file://:0:0:0:0 | | IntPtr! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<NoGCRegionCallbackFinalizerWorkItem*,Void> | 0 | file://:0:0:0:0 | | NoGCRegionCallbackFinalizerWorkItem*! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Void*,Byte*,Void> | 0 | file://:0:0:0:0 | | Void*! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Void*,Byte*,Void> | 1 | file://:0:0:0:0 | `1 | byte*! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | 0 | file://:0:0:0:0 | | Void*! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | 1 | file://:0:0:0:0 | `1 | Void*! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | 2 | file://:0:0:0:0 | `2 | Void*! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | 3 | file://:0:0:0:0 | `3 | GCConfigurationType! |
|
||||
| file://:0:0:0:0 | delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | 4 | file://:0:0:0:0 | `4 | long! |
|
||||
invocation
|
||||
| FunctionPointer.cs:17:21:17:43 | function pointer call |
|
||||
| FunctionPointer.cs:23:13:23:44 | function pointer call |
|
||||
|
||||
@@ -8,13 +8,11 @@ members2
|
||||
| tuple.cs:7:17:7:22 | (Int32,Int32) | ValueTuple<int, int> | Equals(object, IEqualityComparer) |
|
||||
| tuple.cs:7:17:7:22 | (Int32,Int32) | ValueTuple<int, int> | GetHashCode() |
|
||||
| tuple.cs:7:17:7:22 | (Int32,Int32) | ValueTuple<int, int> | GetHashCode(IEqualityComparer) |
|
||||
| tuple.cs:7:17:7:22 | (Int32,Int32) | ValueTuple<int, int> | GetHashCodeCore(IEqualityComparer) |
|
||||
| tuple.cs:7:17:7:22 | (Int32,Int32) | ValueTuple<int, int> | Item1 |
|
||||
| tuple.cs:7:17:7:22 | (Int32,Int32) | ValueTuple<int, int> | Item2 |
|
||||
| tuple.cs:7:17:7:22 | (Int32,Int32) | ValueTuple<int, int> | Item[int] |
|
||||
| tuple.cs:7:17:7:22 | (Int32,Int32) | ValueTuple<int, int> | Length |
|
||||
| tuple.cs:7:17:7:22 | (Int32,Int32) | ValueTuple<int, int> | ToString() |
|
||||
| tuple.cs:7:17:7:22 | (Int32,Int32) | ValueTuple<int, int> | ToStringEnd() |
|
||||
| tuple.cs:7:17:7:22 | (Int32,Int32) | ValueTuple<int, int> | ValueTuple() |
|
||||
| tuple.cs:7:17:7:22 | (Int32,Int32) | ValueTuple<int, int> | ValueTuple(int, int) |
|
||||
| tuple.cs:12:17:12:37 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int> | CompareTo((int, int, int, int, int, int, int)) |
|
||||
@@ -25,7 +23,6 @@ members2
|
||||
| tuple.cs:12:17:12:37 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int> | Equals(object, IEqualityComparer) |
|
||||
| tuple.cs:12:17:12:37 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int> | GetHashCode() |
|
||||
| tuple.cs:12:17:12:37 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int> | GetHashCode(IEqualityComparer) |
|
||||
| tuple.cs:12:17:12:37 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int> | GetHashCodeCore(IEqualityComparer) |
|
||||
| tuple.cs:12:17:12:37 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int> | Item1 |
|
||||
| tuple.cs:12:17:12:37 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int> | Item2 |
|
||||
| tuple.cs:12:17:12:37 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int> | Item3 |
|
||||
@@ -36,7 +33,6 @@ members2
|
||||
| tuple.cs:12:17:12:37 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int> | Item[int] |
|
||||
| tuple.cs:12:17:12:37 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int> | Length |
|
||||
| tuple.cs:12:17:12:37 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int> | ToString() |
|
||||
| tuple.cs:12:17:12:37 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int> | ToStringEnd() |
|
||||
| tuple.cs:12:17:12:37 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int> | ValueTuple() |
|
||||
| tuple.cs:12:17:12:37 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int> | ValueTuple(int, int, int, int, int, int, int) |
|
||||
| tuple.cs:15:17:15:40 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int)> | CompareTo((int, int, int, int, int, int, int, int)) |
|
||||
@@ -47,7 +43,6 @@ members2
|
||||
| tuple.cs:15:17:15:40 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int)> | Equals(object, IEqualityComparer) |
|
||||
| tuple.cs:15:17:15:40 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int)> | GetHashCode() |
|
||||
| tuple.cs:15:17:15:40 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int)> | GetHashCode(IEqualityComparer) |
|
||||
| tuple.cs:15:17:15:40 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int)> | GetHashCodeCore(IEqualityComparer) |
|
||||
| tuple.cs:15:17:15:40 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int)> | Item1 |
|
||||
| tuple.cs:15:17:15:40 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int)> | Item2 |
|
||||
| tuple.cs:15:17:15:40 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int)> | Item3 |
|
||||
@@ -60,7 +55,6 @@ members2
|
||||
| tuple.cs:15:17:15:40 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int)> | Length |
|
||||
| tuple.cs:15:17:15:40 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int)> | Rest |
|
||||
| tuple.cs:15:17:15:40 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int)> | ToString() |
|
||||
| tuple.cs:15:17:15:40 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int)> | ToStringEnd() |
|
||||
| tuple.cs:15:17:15:40 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int)> | ValueTuple() |
|
||||
| tuple.cs:15:17:15:40 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int)> | ValueTuple(int, int, int, int, int, int, int, (int)) |
|
||||
| tuple.cs:18:17:18:47 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int, int, int)> | CompareTo((int, int, int, int, int, int, int, int, int, int)) |
|
||||
@@ -71,7 +65,6 @@ members2
|
||||
| tuple.cs:18:17:18:47 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int, int, int)> | Equals(object, IEqualityComparer) |
|
||||
| tuple.cs:18:17:18:47 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int, int, int)> | GetHashCode() |
|
||||
| tuple.cs:18:17:18:47 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int, int, int)> | GetHashCode(IEqualityComparer) |
|
||||
| tuple.cs:18:17:18:47 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int, int, int)> | GetHashCodeCore(IEqualityComparer) |
|
||||
| tuple.cs:18:17:18:47 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int, int, int)> | Item1 |
|
||||
| tuple.cs:18:17:18:47 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int, int, int)> | Item2 |
|
||||
| tuple.cs:18:17:18:47 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int, int, int)> | Item3 |
|
||||
@@ -86,6 +79,5 @@ members2
|
||||
| tuple.cs:18:17:18:47 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int, int, int)> | Length |
|
||||
| tuple.cs:18:17:18:47 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int, int, int)> | Rest |
|
||||
| tuple.cs:18:17:18:47 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int, int, int)> | ToString() |
|
||||
| tuple.cs:18:17:18:47 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int, int, int)> | ToStringEnd() |
|
||||
| tuple.cs:18:17:18:47 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int, int, int)> | ValueTuple() |
|
||||
| tuple.cs:18:17:18:47 | (Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32) | ValueTuple<int, int, int, int, int, int, int, (int, int, int)> | ValueTuple(int, int, int, int, int, int, int, (int, int, int)) |
|
||||
|
||||
@@ -21,6 +21,7 @@ fn class_name(type_name: &str) -> String {
|
||||
"Fn" => "Function",
|
||||
"Literal" => "LiteralExpr",
|
||||
"Type" => "TypeRef",
|
||||
"ArrayExpr" => "ArrayExprInternal",
|
||||
_ => type_name,
|
||||
};
|
||||
name.to_owned()
|
||||
@@ -354,6 +355,13 @@ fn get_fields(node: &AstNodeSrc) -> Vec<FieldInfo> {
|
||||
is_many: false,
|
||||
});
|
||||
}
|
||||
"ArrayExpr" => {
|
||||
result.push(FieldInfo {
|
||||
name: "is_semicolon".to_string(),
|
||||
tp: "predicate".to_string(),
|
||||
is_many: false,
|
||||
});
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
|
||||
2
rust/extractor/src/generated/.generated.list
generated
2
rust/extractor/src/generated/.generated.list
generated
@@ -1,2 +1,2 @@
|
||||
mod.rs 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7
|
||||
top.rs 4b7dc25409974b210c908c4a15d5b69d242c07305e6e78c9dfe0fa434c22e2bd 4b7dc25409974b210c908c4a15d5b69d242c07305e6e78c9dfe0fa434c22e2bd
|
||||
top.rs 6a10ed08afcc3a92154d3cf8a8cf7de7a27766b5f2ff7a64960d9f9ca0e51fb6 6a10ed08afcc3a92154d3cf8a8cf7de7a27766b5f2ff7a64960d9f9ca0e51fb6
|
||||
|
||||
44
rust/extractor/src/generated/top.rs
generated
44
rust/extractor/src/generated/top.rs
generated
@@ -3041,62 +3041,66 @@ impl From<trap::Label<WherePred>> for trap::Label<Locatable> {
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ArrayExpr {
|
||||
pub id: trap::TrapId<ArrayExpr>,
|
||||
pub struct ArrayExprInternal {
|
||||
pub id: trap::TrapId<ArrayExprInternal>,
|
||||
pub attrs: Vec<trap::Label<Attr>>,
|
||||
pub exprs: Vec<trap::Label<Expr>>,
|
||||
pub is_semicolon: bool,
|
||||
}
|
||||
|
||||
impl trap::TrapEntry for ArrayExpr {
|
||||
impl trap::TrapEntry for ArrayExprInternal {
|
||||
fn extract_id(&mut self) -> trap::TrapId<Self> {
|
||||
std::mem::replace(&mut self.id, trap::TrapId::Star)
|
||||
}
|
||||
|
||||
fn emit(self, id: trap::Label<Self>, out: &mut trap::Writer) {
|
||||
out.add_tuple("array_exprs", vec![id.into()]);
|
||||
out.add_tuple("array_expr_internals", vec![id.into()]);
|
||||
for (i, v) in self.attrs.into_iter().enumerate() {
|
||||
out.add_tuple("array_expr_attrs", vec![id.into(), i.into(), v.into()]);
|
||||
out.add_tuple("array_expr_internal_attrs", vec![id.into(), i.into(), v.into()]);
|
||||
}
|
||||
for (i, v) in self.exprs.into_iter().enumerate() {
|
||||
out.add_tuple("array_expr_exprs", vec![id.into(), i.into(), v.into()]);
|
||||
out.add_tuple("array_expr_internal_exprs", vec![id.into(), i.into(), v.into()]);
|
||||
}
|
||||
if self.is_semicolon {
|
||||
out.add_tuple("array_expr_internal_is_semicolon", vec![id.into()]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl trap::TrapClass for ArrayExpr {
|
||||
fn class_name() -> &'static str { "ArrayExpr" }
|
||||
impl trap::TrapClass for ArrayExprInternal {
|
||||
fn class_name() -> &'static str { "ArrayExprInternal" }
|
||||
}
|
||||
|
||||
impl From<trap::Label<ArrayExpr>> for trap::Label<AstNode> {
|
||||
fn from(value: trap::Label<ArrayExpr>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme ArrayExpr is a subclass of AstNode
|
||||
impl From<trap::Label<ArrayExprInternal>> for trap::Label<AstNode> {
|
||||
fn from(value: trap::Label<ArrayExprInternal>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme ArrayExprInternal is a subclass of AstNode
|
||||
unsafe {
|
||||
Self::from_untyped(value.as_untyped())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<trap::Label<ArrayExpr>> for trap::Label<Element> {
|
||||
fn from(value: trap::Label<ArrayExpr>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme ArrayExpr is a subclass of Element
|
||||
impl From<trap::Label<ArrayExprInternal>> for trap::Label<Element> {
|
||||
fn from(value: trap::Label<ArrayExprInternal>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme ArrayExprInternal is a subclass of Element
|
||||
unsafe {
|
||||
Self::from_untyped(value.as_untyped())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<trap::Label<ArrayExpr>> for trap::Label<Expr> {
|
||||
fn from(value: trap::Label<ArrayExpr>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme ArrayExpr is a subclass of Expr
|
||||
impl From<trap::Label<ArrayExprInternal>> for trap::Label<Expr> {
|
||||
fn from(value: trap::Label<ArrayExprInternal>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme ArrayExprInternal is a subclass of Expr
|
||||
unsafe {
|
||||
Self::from_untyped(value.as_untyped())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<trap::Label<ArrayExpr>> for trap::Label<Locatable> {
|
||||
fn from(value: trap::Label<ArrayExpr>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme ArrayExpr is a subclass of Locatable
|
||||
impl From<trap::Label<ArrayExprInternal>> for trap::Label<Locatable> {
|
||||
fn from(value: trap::Label<ArrayExprInternal>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme ArrayExprInternal is a subclass of Locatable
|
||||
unsafe {
|
||||
Self::from_untyped(value.as_untyped())
|
||||
}
|
||||
|
||||
8
rust/extractor/src/translate/generated.rs
generated
8
rust/extractor/src/translate/generated.rs
generated
@@ -198,16 +198,18 @@ impl Translator<'_> {
|
||||
label
|
||||
}
|
||||
|
||||
pub(crate) fn emit_array_expr(&mut self, node: ast::ArrayExpr) -> Label<generated::ArrayExpr> {
|
||||
pub(crate) fn emit_array_expr(&mut self, node: ast::ArrayExpr) -> Label<generated::ArrayExprInternal> {
|
||||
let attrs = node.attrs().map(|x| self.emit_attr(x)).collect();
|
||||
let exprs = node.exprs().map(|x| self.emit_expr(x)).collect();
|
||||
let label = self.trap.emit(generated::ArrayExpr {
|
||||
let is_semicolon = node.semicolon_token().is_some();
|
||||
let label = self.trap.emit(generated::ArrayExprInternal {
|
||||
id: TrapId::Star,
|
||||
attrs,
|
||||
exprs,
|
||||
is_semicolon,
|
||||
});
|
||||
self.emit_location(label, &node);
|
||||
emit_detached!(ArrayExpr, self, node, label);
|
||||
emit_detached!(ArrayExprInternal, self, node, label);
|
||||
self.emit_tokens(&node, label.into(), node.syntax().children_with_tokens());
|
||||
label
|
||||
}
|
||||
|
||||
37
rust/ql/.generated.list
generated
37
rust/ql/.generated.list
generated
@@ -1,8 +1,10 @@
|
||||
lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll 7411cdfc2c93ad1e70afd41edb6ba098e2bc9db77213850936a48d07b9f716c4 f2dd71fd4fd8a98681f1d931d04b28a01d6eb3987ab56aa4425e2c57316c81f6
|
||||
lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll 3db12c37ded396b11b90d54714a9f285fa652364751fce7f0af08ff094802323 583bdd770edf0d4bf9c53606a5478e344f1636b445e0320df0db4bfc81e1f4ce
|
||||
lib/codeql/rust/elements/Abi.qll 4c973d28b6d628f5959d1f1cc793704572fd0acaae9a97dfce82ff9d73f73476 250f68350180af080f904cd34cb2af481c5c688dc93edf7365fd0ae99855e893
|
||||
lib/codeql/rust/elements/Addressable.qll 13011bfd2e1556694c3d440cc34af8527da4df49ad92b62f2939d3699ff2cea5 ddb25935f7553a1a384b1abe2e4b4fa90ab50b952dadec32fd867afcb054f4be
|
||||
lib/codeql/rust/elements/ArgList.qll 661f5100f5d3ef8351452d9058b663a2a5c720eea8cf11bedd628969741486a2 28e424aac01a90fb58cd6f9f83c7e4cf379eea39e636bc0ba07efc818be71c71
|
||||
lib/codeql/rust/elements/ArrayExpr.qll a3e6e122632f4011644ec31b37f88b32fe3f2b7e388e7e878a6883309937049f 12ccb5873d95c433da5606fd371d182ef2f71b78d0c53c2d6dec10fa45852bdc
|
||||
lib/codeql/rust/elements/ArrayExpr.qll e4e7cff3518c50ec908271906dd46c1fbe9098faa1e8cd06a27f0a6e8d165ed1 fe02a4f4197f57ecd1e8e82d6c9384148ec29d8b106d7f696795b2f325e4a71b
|
||||
lib/codeql/rust/elements/ArrayListExpr.qll 451aedcecb479c385ff497588c7a07fda304fd5b873270223a4f2c804e96b245 a8cb008f6f732215623b5626c84b37b651ca01ccafb2cf4c835df35d5140c6ad
|
||||
lib/codeql/rust/elements/ArrayRepeatExpr.qll 4b7ed5be7d2caaf69f6fc0cd05b0e2416c52d547b1a73fb23d5a13007f75f4dd f6366f21cc48376b5fdf37e8c5c2b19415d4cbdeef09f33bb99cde5cb0f5b0e7
|
||||
lib/codeql/rust/elements/ArrayType.qll affd43d308200d60d08e8924cdbb2a17a827ebaa62a296e07bb9ce97451e3c4c 80589a7f79bf2ac293a027faf2589b3027a6c4a286533f2ffccad259a306a8cb
|
||||
lib/codeql/rust/elements/AsmExpr.qll 2f1c78e92b56d66a559543b2103d8f880dd4fa4c6907346f668b3714cf2355e9 12e174fc469c067c957f6c1a5969ab56a71a07c537ca930a564cce81c7ab4481
|
||||
lib/codeql/rust/elements/AssocItem.qll 5e514287bbe353d1d637991e7af836e5659ad66922df99af68ab61399e7f8f9a 3733af54938271161ee2720c32ac43228d519b5c46b7cea1e4bbe3dc634f8857
|
||||
@@ -175,7 +177,9 @@ lib/codeql/rust/elements/internal/AbiImpl.qll 01439712ecadc9dc8da6f74d2e19cee13c
|
||||
lib/codeql/rust/elements/internal/AddressableImpl.qll e01a6104980960f5708d5a0ada774ba21db9a344e33deeaf3d3239c627268c77 b8bfc711b267df305ac9fe5f6a994f051ddeca7fc95dacd76d1bae2d4fa7adde
|
||||
lib/codeql/rust/elements/internal/ArgListConstructor.qll a73685c8792ae23a2d628e7357658efb3f6e34006ff6e9661863ef116ec0b015 0bee572a046e8dfc031b1216d729843991519d94ae66280f5e795d20aea07a22
|
||||
lib/codeql/rust/elements/internal/ArgListImpl.qll 19664651c06b46530f0ae5745ccb3233afc97b9152e053761d641de6e9c62d38 40af167e571f5c255f264b3be7cc7f5ff42ec109661ca03dcee94e92f8facfc6
|
||||
lib/codeql/rust/elements/internal/ArrayExprConstructor.qll f4ac4efefe5fe4fe1e666f35b1ee92d2243d977b3f3308151c89f61582203c09 4167ae58ec869f7dbd8467093c4a53afd7c1efcf1cc865efa62b4eb484bd7ff8
|
||||
lib/codeql/rust/elements/internal/ArrayExprInternal.qll 07a219b3d3fba3ff8b18e77686b2f58ab01acd99e0f5d5cad5d91af937e228f5 7528fc0e2064c481f0d6cbff3835950a044e429a2cd00c4d8442d2e132560d37
|
||||
lib/codeql/rust/elements/internal/ArrayExprInternalConstructor.qll f9756bc40beee99c5e4355bf157030b440c532dff5bdf43e848b3aa1a00fea90 39467f7f313e6f9ede1fe92375ee408098dc65291ca8ee50e36a3684a2767836
|
||||
lib/codeql/rust/elements/internal/ArrayExprInternalImpl.qll ae4488846c8309b2d4a51d54b36fce0a75107917c0b1f8af5ccf40797f570580 37838c7d6a04b95a16ed46e963d7e56def7a30b5e5ef1ab7e0dfdb5f256fa874
|
||||
lib/codeql/rust/elements/internal/ArrayTypeConstructor.qll 9e92e6c40df992b4d71ae0e80392e81499604c7586a671b89d31d2d98060380e 76a1915a88f50ffa60bf129237bae2d66cf26d2a9018aca8ccb343929e847531
|
||||
lib/codeql/rust/elements/internal/ArrayTypeImpl.qll e22d4f4eb21ba1ea44dd53e0c80aa60ec3a42818c1fc2d512c92dc496a6e2cb3 1b4a7347dbb9310ace1e9e3d08c3ba53c1dc441539cebcb4a78f64a58097bc0a
|
||||
lib/codeql/rust/elements/internal/AsmExprConstructor.qll 36c68023b58beec30af9f05d9d902a4c49faa0206b5528d6aad494a91da07941 4d91b7d30def03e634b92c0d7b99b47c3aadd75f4499f425b80355bc775ea5b6
|
||||
@@ -372,6 +376,7 @@ lib/codeql/rust/elements/internal/TupleFieldListImpl.qll ec17ddfe1d03210b7737f9c
|
||||
lib/codeql/rust/elements/internal/TuplePatConstructor.qll 2a5e83ad5b8713a732e610128aeddf14e9b344402d6cf30ff0b43aa39e838418 6d467f7141307523994f03ed7b8e8b1a5bcf860963c9934b90e54582ea38096a
|
||||
lib/codeql/rust/elements/internal/TuplePatImpl.qll 4adb38f0f8dae4ff285b9f5843efb92af419719a7549e0ff62dc56969bd3c852 3f622130771d7731ed053175a83b289bab1d1f5931526c4854923dbcec7e43f1
|
||||
lib/codeql/rust/elements/internal/TupleStructPatConstructor.qll 9d68f67a17a5cec0e78907a53eccfa7696be5b0571da4b486c8184274e56344a 3ffa29f546cd6c644be4fecc7415477a3a4dc00d69b8764be9119abe4c6d8b9e
|
||||
lib/codeql/rust/elements/internal/TupleStructPatImpl.qll 896f001d82938bd018516a2b59ba5ad76350edb6b9747ed2ef5b96760aa16388 0552f9c0361d14be9896cbcfda17d8884d03a82c4f23c511a8de77fe71cfbb9f
|
||||
lib/codeql/rust/elements/internal/TupleTypeConstructor.qll 88eaec829cd4dcc6a152c7a335b1d365702ef410e46d9c04806fe53f06325b23 044fd0aca067bae82eb8ac448b7bcc66bc736e7e0ab8b770ee126381888fac3d
|
||||
lib/codeql/rust/elements/internal/TupleTypeImpl.qll 4d570a1d6c3d69d8f62f125c71f67dd90e982801905716d50292f2e652156948 1dcefae60448b21f85d46d252e314d67a9f2a90171e56351e08e2bc0a4077fb8
|
||||
lib/codeql/rust/elements/internal/TypeAliasConstructor.qll 048caa79eb7d400971e3e6d7e580867cbee4bd6b9d291aafac423aa96c321e76 d1d1e33a789ae6fa1a96af4d23d6376b9d82e14e3cbb777963e2d2cb8b22f66d
|
||||
@@ -415,7 +420,10 @@ lib/codeql/rust/elements/internal/YieldExprImpl.qll af184649a348ddd0be16dee9daae
|
||||
lib/codeql/rust/elements/internal/generated/Abi.qll 87e1ea6b2a8ebf60e1c69176632740e4e27fc56c3f173939b098ba376562b5fa 94b2121e71c4ec94d53a79f972c05a8484ef0d80ed638f53031e7cf4dc5343d5
|
||||
lib/codeql/rust/elements/internal/generated/Addressable.qll 96a8b45166dd035b8d2c6d36b8b67019f2d4d0b4ccff6d492677c0c87197613e d8f1ce29feafc8ff7179399fc7eac5db031a7e1a8bc6b2cd75cfce1da3132e9b
|
||||
lib/codeql/rust/elements/internal/generated/ArgList.qll 1b75b2d7dcf524eb468a0268af6293e9d17832d6bedf3feec49a535824339b57 2bcaf464454bdfdda45fbd24d063f0f1df0eb69f684197b37105adc8f72cd1ea
|
||||
lib/codeql/rust/elements/internal/generated/ArrayExpr.qll 2ca97b602a707fe2c566002d8709792bb166ae52fdb7da28d7c4b8e0d66dd4bc 1cae1ef017171ec9a1ca28b4f2993b1ee26d22b51b3b04816d9b4e89fdff1fb3
|
||||
lib/codeql/rust/elements/internal/generated/ArrayExpr.qll 73806a0de8168b38a9436fa6b8c6d68c92eeab3d64a1ae7edfff82f871929992 7ad998cdd8f4fed226473517ad7a5765cb35608033047aad53bf8aa3969fd03b
|
||||
lib/codeql/rust/elements/internal/generated/ArrayExprInternal.qll 67a7b0fae04b11cf771727ff39a123fb2d5ce6e2d650d32478fcb33a26ed5688 15833405fa85f6abe0e5146dac283cb5a142a07f08300ccc15a1dae30ed88942
|
||||
lib/codeql/rust/elements/internal/generated/ArrayListExpr.qll f325163c2bd401286305330482bee20d060cecd24afa9e49deab7ba7e72ca056 ae3f5b303e31fc6c48b38172304ee8dcf3af2b2ba693767824ea8a944b6be0eb
|
||||
lib/codeql/rust/elements/internal/generated/ArrayRepeatExpr.qll ac2035488d5b9328f01ce2dd5bd7598e3af1cbb383ddb48b648e1e8908ea82fc 3ec910b184115fb3750692287e8039560e20bd6a5fb26ac1f9c346424d8eaa48
|
||||
lib/codeql/rust/elements/internal/generated/ArrayType.qll 225ac477f67865d72b2a2e17420f5e52c25452a3c14f7ff367f873a859f97783 0030e3bf296dd5b69ea912fc85dc7120b060780033083127257cdca792dc3f4b
|
||||
lib/codeql/rust/elements/internal/generated/AsmExpr.qll b5fef59589c02c17857a4a7f5c7b5efb747a1e98710167efa5c2e88cffd7bcbb b43b297a3b4894e8dd92ef3a23b76f2684c303d41e6030398e69b7754ebea9cd
|
||||
lib/codeql/rust/elements/internal/generated/AssocItem.qll aa7c06e001b67e4a59476fa7299e09f8da16c93f91aff0ec9812c64386e7c023 0032b45e34e6aba9c4b3d319b108efa0de8ad679b5f254a1ec7c606877ff5e95
|
||||
@@ -513,7 +521,7 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll c808c9d84dd7800573832b
|
||||
lib/codeql/rust/elements/internal/generated/ParenExpr.qll bc0731505bfe88516205ec360582a4222d2681d11342c93e15258590ddee82f2 d4bd6e0c80cf1d63746c88d4bcb3a01d4c75732e5da09e3ebd9437ced227fb60
|
||||
lib/codeql/rust/elements/internal/generated/ParenPat.qll ce24b8f8ecbf0f204af200317405724063887257460c80cf250c39b2fdf37185 e7c87d37e1a0ca7ea03840017e1aa9ddb7f927f1f3b6396c0305b46aeee33db6
|
||||
lib/codeql/rust/elements/internal/generated/ParenType.qll 9cc954d73f8330dcac7b475f97748b63af5c8766dee9d2f2872c0a7e4c903537 c07534c8a9c683c4a9b11d490095647e420de0a0bfc23273eaf6f31b00244273
|
||||
lib/codeql/rust/elements/internal/generated/ParentChild.qll db8cf5d75d53414409fbe1c85865238a026164ea8225736f62de30f334079e1c d0d5bab0287122d754dcb50e6473d178405ba3e4d8e78a82764cbecf5cc6593c
|
||||
lib/codeql/rust/elements/internal/generated/ParentChild.qll cb7f619c37126b6bbc8af238ab7c153d7256ea1345d252bf20d2bc480cb60326 71b8ea3a1bacff89c0f78abe5a49f6463c0c80f3e73493f373a2db34d12c1f71
|
||||
lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4
|
||||
lib/codeql/rust/elements/internal/generated/Path.qll bf6a86e7fcb7164624cc070dcce86d2bda50a2516b95115b87d0ebb5596e50a1 fd7a9ad4034cdebe8dfe495619c46f464630d38195313072e0bd904061b0fb00
|
||||
lib/codeql/rust/elements/internal/generated/PathAstNode.qll e6d4d5bffd3c623baaaee46bc183eb31ce88795535f164f6a9b9b4d98bbd6101 168db515404933479ba6b150c72e012d28592cbc32366aefcb1bf9599dbcd183
|
||||
@@ -524,10 +532,10 @@ lib/codeql/rust/elements/internal/generated/PathSegment.qll 0fa07886deb0fc4d909d
|
||||
lib/codeql/rust/elements/internal/generated/PathType.qll df6fd322ba0d99d6cb315edce8dbf099b661b84fdfcc3ad629fdd1fd066c1986 e11c8615cd7b02034b47b58f30a7b6fcbc6d33ec53303288dfd34d9a25f5a186
|
||||
lib/codeql/rust/elements/internal/generated/PrefixExpr.qll c9ede5f2deb7b41bc8240969e8554f645057018fe96e7e9ad9c2924c8b14722b 5ae2e3c3dc8fa73e7026ef6534185afa6b0b5051804435d8b741dd3640c864e1
|
||||
lib/codeql/rust/elements/internal/generated/PtrType.qll 40099c5a4041314b66932dfd777c9e2bef90a0711fb8d7c2c2cec764c003ac4a cf8297d93557356a572223d3e8acca701837c4b1f54e8d4351ba195fb7ed27f8
|
||||
lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll ea294a3ba33fd1bc632046c4fedbcb84dcb961a8e4599969d65893b19d90e590 ea294a3ba33fd1bc632046c4fedbcb84dcb961a8e4599969d65893b19d90e590
|
||||
lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f
|
||||
lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9
|
||||
lib/codeql/rust/elements/internal/generated/RangePat.qll efd93730de217cf50dcba5875595263a5eadf9f7e4e1272401342a094d158614 229b251b3d118932e31e78ac4dfb75f48b766f240f20d436062785606d44467b
|
||||
lib/codeql/rust/elements/internal/generated/Raw.qll aa46ac03eea469d7f8ea52c1b9d1f266870c3a1bcd034a9efcf3becef984d8f7 36bcd61f69be5a713d151f3583cca20ea92e3e8e09343c7ddebb618f6de8649f
|
||||
lib/codeql/rust/elements/internal/generated/Raw.qll a60f160eff72d1a940f30357d5cdc45d835c2ded2e6c4413ae077a2d5c9c34bd 52d419ad9d1d86441e4de463176b721f5aa0e8e43491e80d6b43f9e7a903abea
|
||||
lib/codeql/rust/elements/internal/generated/RecordExpr.qll 2131b2cb336caa76170082e69776011bf02576bbfdd34ba68ca84af24209250a 39a2e3ec32352b594c43cc1295e0e8b3f9808173322d3d73cb7d48ef969d5565
|
||||
lib/codeql/rust/elements/internal/generated/RecordExprField.qll 7e9f8663d3b74ebbc9603b10c9912f082febba6bd73d344b100bbd3edf837802 fbe6b578e7fd5d5a6f21bbb8c388957ab7210a6a249ec71510a50fb35b319ea1
|
||||
lib/codeql/rust/elements/internal/generated/RecordExprFieldList.qll 179a97211fe7aa6265085d4d54115cdbc0e1cd7c9b2135591e8f36d6432f13d3 dd44bbbc1e83a1ed3a587afb729d7debf7aeb7b63245de181726af13090e50c0
|
||||
@@ -553,8 +561,8 @@ lib/codeql/rust/elements/internal/generated/Static.qll 5fbd6879858cf356d4bdaa6da
|
||||
lib/codeql/rust/elements/internal/generated/Stmt.qll 8473ff532dd5cc9d7decaddcd174b94d610f6ca0aec8e473cc051dad9f3db917 6ef7d2b5237c2dbdcacbf7d8b39109d4dc100229f2b28b5c9e3e4fbf673ba72b
|
||||
lib/codeql/rust/elements/internal/generated/StmtList.qll a667193e32341e17400867c6e359878c4e645ef9f5f4d97676afc0283a33a026 a320ed678ee359302e2fc1b70a9476705cd616fcfa44a499d32f0c7715627f73
|
||||
lib/codeql/rust/elements/internal/generated/Struct.qll 4d57f0db12dc7ad3e31e750a24172ef1505406b4dab16386af0674bd18bf8f4b 1a73c83df926b996f629316f74c61ea775be04532ab61b56af904223354f033e
|
||||
lib/codeql/rust/elements/internal/generated/Synth.qll b635676938a62e67c8c0db6eb21c6d2cbce0d9d3d429f91f8f85bd79c0c4d7c0 444e2bb62325bd1dc1d3a3e9c2b8ae161f0eb70659cf809ce069eb6886417bc4
|
||||
lib/codeql/rust/elements/internal/generated/SynthConstructors.qll e929c49ea60810a2bbc19ad38110b8bbaf21db54dae90393b21a3459a54abf6f e929c49ea60810a2bbc19ad38110b8bbaf21db54dae90393b21a3459a54abf6f
|
||||
lib/codeql/rust/elements/internal/generated/Synth.qll f68a546cde529338cde95749554f67da987dc75a1848eb188d10c10fe821e5ad 81fb711a1d3c89739002a4d230e1785c0b525d09511d5ca55168c89916e7f7a1
|
||||
lib/codeql/rust/elements/internal/generated/SynthConstructors.qll 410b2360c1469a655e1a8c7586add83477d129fcb53f61d438502bf43dfb4af2 410b2360c1469a655e1a8c7586add83477d129fcb53f61d438502bf43dfb4af2
|
||||
lib/codeql/rust/elements/internal/generated/Token.qll 77a91a25ca5669703cf3a4353b591cef4d72caa6b0b9db07bb9e005d69c848d1 2fdffc4882ed3a6ca9ac6d1fb5f1ac5a471ca703e2ffdc642885fa558d6e373b
|
||||
lib/codeql/rust/elements/internal/generated/TokenTree.qll 8577c2b097c1be2f0f7daa5acfcf146f78674a424d99563e08a84dd3e6d91b46 d2f30764e84dbfc0a6a5d3d8a5f935cd432413688cb32da9c94e420fbc10665c
|
||||
lib/codeql/rust/elements/internal/generated/Trait.qll 8fa41b50fa0f68333534f2b66bb4ec8e103ff09ac8fa5c2cc64bc04beafec205 ce1c9aa6d0e2f05d28aab8e1165c3b9fb8e24681ade0cf6a9df2e8617abeae7e
|
||||
@@ -588,14 +596,17 @@ lib/codeql/rust/elements/internal/generated/WhileExpr.qll 7edf1f23fbf953a2baabcd
|
||||
lib/codeql/rust/elements/internal/generated/WildcardPat.qll d74b70b57a0a66bfae017a329352a5b27a6b9e73dd5521d627f680e810c6c59e 4b913b548ba27ff3c82fcd32cf996ff329cb57d176d3bebd0fcef394486ea499
|
||||
lib/codeql/rust/elements/internal/generated/YeetExpr.qll cac328200872a35337b4bcb15c851afb4743f82c080f9738d295571eb01d7392 94af734eea08129b587fed849b643e7572800e8330c0b57d727d41abda47930b
|
||||
lib/codeql/rust/elements/internal/generated/YieldExpr.qll 37e5f0c1e373a22bbc53d8b7f2c0e1f476e5be5080b8437c5e964f4e83fad79a 4a9a68643401637bf48e5c2b2f74a6bf0ddcb4ff76f6bffb61d436b685621e85
|
||||
lib/codeql/rust/elements.qll ba73bcb718837cc3d9d6f283609a869dc48b7848109e07496d5f52723dc2e62c ba73bcb718837cc3d9d6f283609a869dc48b7848109e07496d5f52723dc2e62c
|
||||
lib/codeql/rust/elements.qll 5e3fe8b5e62023caf32edf041d7f937a859689fb73fed6e4a0aa3ba2c09e8ffb 5e3fe8b5e62023caf32edf041d7f937a859689fb73fed6e4a0aa3ba2c09e8ffb
|
||||
test/extractor-tests/generated/Abi/Abi.ql 7f6e7dc4af86eca3ebdc79b10373988cd0871bd78b51997d3cffd969105e5fdd 2f936b6ca005c6157c755121584410c03e4a3949c23bee302fbe05ee10ce118f
|
||||
test/extractor-tests/generated/Abi/Abi_getAbiString.ql a496762fcec5a0887b87023bbf93e9b650f02e20113e25c44d6e4281ae8f5335 14109c7ce11ba25e3cd6e7f1b3fcb4cb00622f2a4eac91bfe43145c5f366bc52
|
||||
test/extractor-tests/generated/ArgList/ArgList.ql e412927756e72165d0e7c5c9bd3fca89d08197bbf760db8fb7683c64bb2229bc 043dba8506946fbb87753e22c387987d7eded6ddb963aa067f9e60ef9024d684
|
||||
test/extractor-tests/generated/ArgList/ArgList_getArg.ql c07c946218489a0ad5fe89e5fd4a7f0ad84a73dc2e650729f48a340cb133be84 ff2382c0693f47e5eb1290aca325290e60c19d877b25b1d7e2ee96009f5fe934
|
||||
test/extractor-tests/generated/ArrayExpr/ArrayExpr.ql fd4e504678714c99a987069e5013bda04313573cec2bab31b74bc4559bb73d7f 0b63120b61964a215ec451793a1b5aef525882484ad62193d7635b5a370881d4
|
||||
test/extractor-tests/generated/ArrayExpr/ArrayExpr_getAttr.ql ce143c8b416c35270cca839848baf6d8cda74251f3717314e0f332fcb74a9259 c86d282153feee3facad752ed0fc1638be0cbaafca4ec620f337ad61b694cade
|
||||
test/extractor-tests/generated/ArrayExpr/ArrayExpr_getExpr.ql e8b7e24db6fc6098131fea1053430920b2e2f33d2aa52b10d2ff29b9efd70a88 a52b6b2476104695b395d86bbd1a99068372ca56989ea94b150055e664ba034a
|
||||
test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql e6f9fe0dd6af5a1223e1e59827346aa2975bd665aeda36e8844ffb3a79c5e532 38576b6f7257c119917442e4f54fc883480e4da86d2542a1ac16d723ebbba039
|
||||
test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getAttr.ql f1ca0521f641bed17581121c0f07c7f8737d9891acdde2c68de59a0684e86a34 496da6513cfee28a31274a2e72b5a58d843407ac5e4870296da0f0b8e7fc85c1
|
||||
test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getExpr.ql 6920b532623e8c919701a83a059d9b1aac9e8673e7fdbe26e0a8af5ad6a34b8a 601137c715ce947d79f39d5b131d7ab167a16d29477eacdb1380cd647c4ebac4
|
||||
test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql 60a0df80fd34ca5c960b5e060c7090f8bbb8af83aba7099aa298a80e19a13346 c41f80601c7f50eee01c0ed7587e0198296d6a8a5b95c98dd8f865901d34ba5c
|
||||
test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getAttr.ql fc6ca212aa633b73ee21f7564631c9ad345f15839656d88940dc686cf076a344 d580a367305adbe168996a294329b1adec36956a500ae9717a4af78cb2bef4e6
|
||||
test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getExpr.ql 6b00037350fc36cc46345a290bda4c4d4ff99050b970d23eb94294313046a884 0687638b46e43bba9dda35d78ff7b40f976e5e38271eec77e7a21c28349dc42c
|
||||
test/extractor-tests/generated/ArrayType/ArrayType.ql d781ea647d60218777261d82230bd85f989a4768a043e736d268363b5a777390 b5c7fa0aa1b8b1f3a82b8af7254bf20efd3477bba83ad53530959d1733636604
|
||||
test/extractor-tests/generated/ArrayType/ArrayType_getConstArg.ql b6a250873bc2d553219b8301a15bd19a4044f590085992c532a800bf3ab744cb 5e6b9dbbe2d3ea7f6fa3fba4811517a528d5eb58169b69d1b9113e1508c6e627
|
||||
test/extractor-tests/generated/ArrayType/ArrayType_getTy.ql 1c23613e509ada3ffc1f727d0db7c5955dbc104d886fe5f9d8f39413b54d16b0 a662d234e1e54159d931a873f20ed8953d9b27778c7a6ca898f86b31d1dae0cc
|
||||
|
||||
19
rust/ql/.gitattributes
generated
vendored
19
rust/ql/.gitattributes
generated
vendored
@@ -5,6 +5,8 @@
|
||||
/lib/codeql/rust/elements/Addressable.qll linguist-generated
|
||||
/lib/codeql/rust/elements/ArgList.qll linguist-generated
|
||||
/lib/codeql/rust/elements/ArrayExpr.qll linguist-generated
|
||||
/lib/codeql/rust/elements/ArrayListExpr.qll linguist-generated
|
||||
/lib/codeql/rust/elements/ArrayRepeatExpr.qll linguist-generated
|
||||
/lib/codeql/rust/elements/ArrayType.qll linguist-generated
|
||||
/lib/codeql/rust/elements/AsmExpr.qll linguist-generated
|
||||
/lib/codeql/rust/elements/AssocItem.qll linguist-generated
|
||||
@@ -177,7 +179,9 @@
|
||||
/lib/codeql/rust/elements/internal/AddressableImpl.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/ArgListConstructor.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/ArgListImpl.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/ArrayExprConstructor.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/ArrayExprInternal.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/ArrayExprInternalConstructor.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/ArrayExprInternalImpl.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/ArrayTypeConstructor.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/ArrayTypeImpl.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/AsmExprConstructor.qll linguist-generated
|
||||
@@ -374,6 +378,7 @@
|
||||
/lib/codeql/rust/elements/internal/TuplePatConstructor.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/TuplePatImpl.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/TupleStructPatConstructor.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/TupleStructPatImpl.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/TupleTypeConstructor.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/TupleTypeImpl.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/TypeAliasConstructor.qll linguist-generated
|
||||
@@ -418,6 +423,9 @@
|
||||
/lib/codeql/rust/elements/internal/generated/Addressable.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/generated/ArgList.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/generated/ArrayExpr.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/generated/ArrayExprInternal.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/generated/ArrayListExpr.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/generated/ArrayRepeatExpr.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/generated/ArrayType.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/generated/AsmExpr.qll linguist-generated
|
||||
/lib/codeql/rust/elements/internal/generated/AssocItem.qll linguist-generated
|
||||
@@ -595,9 +603,12 @@
|
||||
/test/extractor-tests/generated/Abi/Abi_getAbiString.ql linguist-generated
|
||||
/test/extractor-tests/generated/ArgList/ArgList.ql linguist-generated
|
||||
/test/extractor-tests/generated/ArgList/ArgList_getArg.ql linguist-generated
|
||||
/test/extractor-tests/generated/ArrayExpr/ArrayExpr.ql linguist-generated
|
||||
/test/extractor-tests/generated/ArrayExpr/ArrayExpr_getAttr.ql linguist-generated
|
||||
/test/extractor-tests/generated/ArrayExpr/ArrayExpr_getExpr.ql linguist-generated
|
||||
/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql linguist-generated
|
||||
/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getAttr.ql linguist-generated
|
||||
/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr_getExpr.ql linguist-generated
|
||||
/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql linguist-generated
|
||||
/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getAttr.ql linguist-generated
|
||||
/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getExpr.ql linguist-generated
|
||||
/test/extractor-tests/generated/ArrayType/ArrayType.ql linguist-generated
|
||||
/test/extractor-tests/generated/ArrayType/ArrayType_getConstArg.ql linguist-generated
|
||||
/test/extractor-tests/generated/ArrayType/ArrayType_getTy.ql linguist-generated
|
||||
|
||||
@@ -81,7 +81,7 @@ module MakeCfgNodes<LocationSig Loc, InputSig<Loc> Input> {
|
||||
}
|
||||
|
||||
/**
|
||||
* An array expression. For example:
|
||||
* The base class for array expressions. For example:
|
||||
* ```rust
|
||||
* [1, 2, 3];
|
||||
* [1; 10];
|
||||
@@ -95,21 +95,6 @@ module MakeCfgNodes<LocationSig Loc, InputSig<Loc> Input> {
|
||||
/** Gets the underlying `ArrayExpr`. */
|
||||
ArrayExpr getArrayExpr() { result = node }
|
||||
|
||||
/**
|
||||
* Gets the `index`th attr of this array expression (0-based).
|
||||
*/
|
||||
Attr getAttr(int index) { result = node.getAttr(index) }
|
||||
|
||||
/**
|
||||
* Gets any of the attrs of this array expression.
|
||||
*/
|
||||
Attr getAnAttr() { result = this.getAttr(_) }
|
||||
|
||||
/**
|
||||
* Gets the number of attrs of this array expression.
|
||||
*/
|
||||
int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) }
|
||||
|
||||
/**
|
||||
* Gets the `index`th expression of this array expression (0-based).
|
||||
*/
|
||||
@@ -126,6 +111,79 @@ module MakeCfgNodes<LocationSig Loc, InputSig<Loc> Input> {
|
||||
* Gets the number of expressions of this array expression.
|
||||
*/
|
||||
int getNumberOfExprs() { result = count(int i | exists(this.getExpr(i))) }
|
||||
|
||||
/**
|
||||
* Gets the `index`th attr of this array expression (0-based).
|
||||
*/
|
||||
Attr getAttr(int index) { result = node.getAttr(index) }
|
||||
|
||||
/**
|
||||
* Gets any of the attrs of this array expression.
|
||||
*/
|
||||
Attr getAnAttr() { result = this.getAttr(_) }
|
||||
|
||||
/**
|
||||
* Gets the number of attrs of this array expression.
|
||||
*/
|
||||
int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) }
|
||||
}
|
||||
|
||||
final private class ParentArrayListExpr extends ParentAstNode, ArrayListExpr {
|
||||
override predicate relevantChild(AstNode child) { none() }
|
||||
}
|
||||
|
||||
/**
|
||||
* An array expression with a list of elements. For example:
|
||||
* ```rust
|
||||
* [1, 2, 3];
|
||||
* ```
|
||||
*/
|
||||
final class ArrayListExprCfgNode extends CfgNodeFinal, ArrayExprCfgNode {
|
||||
private ArrayListExpr node;
|
||||
|
||||
ArrayListExprCfgNode() { node = this.getAstNode() }
|
||||
|
||||
/** Gets the underlying `ArrayListExpr`. */
|
||||
ArrayListExpr getArrayListExpr() { result = node }
|
||||
}
|
||||
|
||||
final private class ParentArrayRepeatExpr extends ParentAstNode, ArrayRepeatExpr {
|
||||
override predicate relevantChild(AstNode child) {
|
||||
none()
|
||||
or
|
||||
child = this.getRepeatOperand()
|
||||
or
|
||||
child = this.getRepeatLength()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* An array expression with a repeat operand and a repeat length. For example:
|
||||
* ```rust
|
||||
* [1; 10];
|
||||
* ```
|
||||
*/
|
||||
final class ArrayRepeatExprCfgNode extends CfgNodeFinal, ArrayExprCfgNode {
|
||||
private ArrayRepeatExpr node;
|
||||
|
||||
ArrayRepeatExprCfgNode() { node = this.getAstNode() }
|
||||
|
||||
/** Gets the underlying `ArrayRepeatExpr`. */
|
||||
ArrayRepeatExpr getArrayRepeatExpr() { result = node }
|
||||
|
||||
/**
|
||||
* Gets the repeat operand of this array repeat expression.
|
||||
*/
|
||||
ExprCfgNode getRepeatOperand() {
|
||||
any(ChildMapping mapping).hasCfgChild(node, node.getRepeatOperand(), this, result)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the repeat length of this array repeat expression.
|
||||
*/
|
||||
ExprCfgNode getRepeatLength() {
|
||||
any(ChildMapping mapping).hasCfgChild(node, node.getRepeatLength(), this, result)
|
||||
}
|
||||
}
|
||||
|
||||
final private class ParentAsmExpr extends ParentAstNode, AsmExpr {
|
||||
@@ -3077,6 +3135,30 @@ module MakeCfgNodes<LocationSig Loc, InputSig<Loc> Input> {
|
||||
cfgNode
|
||||
)
|
||||
or
|
||||
pred = "getRepeatOperand" and
|
||||
parent =
|
||||
any(Nodes::ArrayRepeatExprCfgNode cfgNode, ArrayRepeatExpr astNode |
|
||||
astNode = cfgNode.getArrayRepeatExpr() and
|
||||
child = getDesugared(astNode.getRepeatOperand()) and
|
||||
i = -1 and
|
||||
hasCfgNode(child) and
|
||||
not child = cfgNode.getRepeatOperand().getAstNode()
|
||||
|
|
||||
cfgNode
|
||||
)
|
||||
or
|
||||
pred = "getRepeatLength" and
|
||||
parent =
|
||||
any(Nodes::ArrayRepeatExprCfgNode cfgNode, ArrayRepeatExpr astNode |
|
||||
astNode = cfgNode.getArrayRepeatExpr() and
|
||||
child = getDesugared(astNode.getRepeatLength()) and
|
||||
i = -1 and
|
||||
hasCfgNode(child) and
|
||||
not child = cfgNode.getRepeatLength().getAstNode()
|
||||
|
|
||||
cfgNode
|
||||
)
|
||||
or
|
||||
pred = "getExpr" and
|
||||
parent =
|
||||
any(Nodes::AsmExprCfgNode cfgNode, AsmExpr astNode |
|
||||
|
||||
2
rust/ql/lib/codeql/rust/elements.qll
generated
2
rust/ql/lib/codeql/rust/elements.qll
generated
@@ -7,6 +7,8 @@ import codeql.rust.elements.Abi
|
||||
import codeql.rust.elements.Addressable
|
||||
import codeql.rust.elements.ArgList
|
||||
import codeql.rust.elements.ArrayExpr
|
||||
import codeql.rust.elements.ArrayListExpr
|
||||
import codeql.rust.elements.ArrayRepeatExpr
|
||||
import codeql.rust.elements.ArrayType
|
||||
import codeql.rust.elements.AsmExpr
|
||||
import codeql.rust.elements.AssocItem
|
||||
|
||||
2
rust/ql/lib/codeql/rust/elements/ArrayExpr.qll
generated
2
rust/ql/lib/codeql/rust/elements/ArrayExpr.qll
generated
@@ -8,7 +8,7 @@ import codeql.rust.elements.Attr
|
||||
import codeql.rust.elements.Expr
|
||||
|
||||
/**
|
||||
* An array expression. For example:
|
||||
* The base class for array expressions. For example:
|
||||
* ```rust
|
||||
* [1, 2, 3];
|
||||
* [1; 10];
|
||||
|
||||
15
rust/ql/lib/codeql/rust/elements/ArrayListExpr.qll
generated
Normal file
15
rust/ql/lib/codeql/rust/elements/ArrayListExpr.qll
generated
Normal file
@@ -0,0 +1,15 @@
|
||||
// generated by codegen, do not edit
|
||||
/**
|
||||
* This module provides the public class `ArrayListExpr`.
|
||||
*/
|
||||
|
||||
private import internal.ArrayListExprImpl
|
||||
import codeql.rust.elements.ArrayExpr
|
||||
|
||||
/**
|
||||
* An array expression with a list of elements. For example:
|
||||
* ```rust
|
||||
* [1, 2, 3];
|
||||
* ```
|
||||
*/
|
||||
final class ArrayListExpr = Impl::ArrayListExpr;
|
||||
16
rust/ql/lib/codeql/rust/elements/ArrayRepeatExpr.qll
generated
Normal file
16
rust/ql/lib/codeql/rust/elements/ArrayRepeatExpr.qll
generated
Normal file
@@ -0,0 +1,16 @@
|
||||
// generated by codegen, do not edit
|
||||
/**
|
||||
* This module provides the public class `ArrayRepeatExpr`.
|
||||
*/
|
||||
|
||||
private import internal.ArrayRepeatExprImpl
|
||||
import codeql.rust.elements.ArrayExpr
|
||||
import codeql.rust.elements.Expr
|
||||
|
||||
/**
|
||||
* An array expression with a repeat operand and a repeat length. For example:
|
||||
* ```rust
|
||||
* [1; 10];
|
||||
* ```
|
||||
*/
|
||||
final class ArrayRepeatExpr = Impl::ArrayRepeatExpr;
|
||||
@@ -1,14 +0,0 @@
|
||||
// generated by codegen, remove this comment if you wish to edit this file
|
||||
/**
|
||||
* This module defines the hook used internally to tweak the characteristic predicate of
|
||||
* `ArrayExpr` synthesized instances.
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
|
||||
private import codeql.rust.elements.internal.generated.Raw
|
||||
|
||||
/**
|
||||
* The characteristic predicate of `ArrayExpr` synthesized instances.
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
predicate constructArrayExpr(Raw::ArrayExpr id) { any() }
|
||||
@@ -5,6 +5,8 @@
|
||||
*/
|
||||
|
||||
private import codeql.rust.elements.internal.generated.ArrayExpr
|
||||
private import codeql.rust.elements.internal.generated.Raw
|
||||
private import codeql.rust.elements.internal.generated.Synth
|
||||
|
||||
/**
|
||||
* INTERNAL: This module contains the customizable definition of `ArrayExpr` and should not
|
||||
@@ -13,13 +15,24 @@ private import codeql.rust.elements.internal.generated.ArrayExpr
|
||||
module Impl {
|
||||
// the following QLdoc is generated: if you need to edit it, do it in the schema file
|
||||
/**
|
||||
* An array expression. For example:
|
||||
* The base class for array expressions. For example:
|
||||
* ```rust
|
||||
* [1, 2, 3];
|
||||
* [1; 10];
|
||||
* ```
|
||||
*/
|
||||
class ArrayExpr extends Generated::ArrayExpr {
|
||||
override string toString() { result = "[...]" }
|
||||
cached
|
||||
private Raw::ArrayExprInternal getUnderlyingEntity() {
|
||||
this = Synth::TArrayListExpr(result) or this = Synth::TArrayRepeatExpr(result)
|
||||
}
|
||||
|
||||
override Expr getExpr(int index) {
|
||||
result = Synth::convertExprFromRaw(this.getUnderlyingEntity().getExpr(index))
|
||||
}
|
||||
|
||||
override Attr getAttr(int index) {
|
||||
result = Synth::convertAttrFromRaw(this.getUnderlyingEntity().getAttr(index))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
13
rust/ql/lib/codeql/rust/elements/internal/ArrayExprInternal.qll
generated
Normal file
13
rust/ql/lib/codeql/rust/elements/internal/ArrayExprInternal.qll
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
// generated by codegen, do not edit
|
||||
/**
|
||||
* This module provides the class `ArrayExprInternal`.
|
||||
*/
|
||||
|
||||
private import ArrayExprInternalImpl
|
||||
import codeql.rust.elements.Attr
|
||||
import codeql.rust.elements.Expr
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
final class ArrayExprInternal = Impl::ArrayExprInternal;
|
||||
17
rust/ql/lib/codeql/rust/elements/internal/ArrayExprInternalConstructor.qll
generated
Normal file
17
rust/ql/lib/codeql/rust/elements/internal/ArrayExprInternalConstructor.qll
generated
Normal file
@@ -0,0 +1,17 @@
|
||||
// generated by codegen, remove this comment if you wish to edit this file
|
||||
/**
|
||||
* This module defines the hook used internally to tweak the characteristic predicate of
|
||||
* `ArrayExprInternal` synthesized instances.
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
|
||||
private import codeql.rust.elements.internal.generated.Raw
|
||||
private import codeql.rust.elements.internal.generated.PureSynthConstructors
|
||||
|
||||
/**
|
||||
* The characteristic predicate of `ArrayExprInternal` synthesized instances.
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
predicate constructArrayExprInternal(Raw::ArrayExprInternal id) {
|
||||
not constructArrayListExpr(id) and not constructArrayRepeatExpr(id)
|
||||
}
|
||||
16
rust/ql/lib/codeql/rust/elements/internal/ArrayExprInternalImpl.qll
generated
Normal file
16
rust/ql/lib/codeql/rust/elements/internal/ArrayExprInternalImpl.qll
generated
Normal file
@@ -0,0 +1,16 @@
|
||||
// generated by codegen, remove this comment if you wish to edit this file
|
||||
/**
|
||||
* This module provides a hand-modifiable wrapper around the generated class `ArrayExprInternal`.
|
||||
*
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
|
||||
private import codeql.rust.elements.internal.generated.ArrayExprInternal
|
||||
|
||||
/**
|
||||
* INTERNAL: This module contains the customizable definition of `ArrayExprInternal` and should not
|
||||
* be referenced directly.
|
||||
*/
|
||||
module Impl {
|
||||
class ArrayExprInternal extends Generated::ArrayExprInternal { }
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
/**
|
||||
* This module defines the hook used internally to tweak the characteristic predicate of
|
||||
* `ArrayListExpr` synthesized instances.
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
|
||||
private import codeql.rust.elements.internal.generated.Raw
|
||||
|
||||
/**
|
||||
* The characteristic predicate of `ArrayListExpr` synthesized instances.
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
predicate constructArrayListExpr(Raw::ArrayExprInternal id) { not id.isSemicolon() }
|
||||
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* This module provides a hand-modifiable wrapper around the generated class `ArrayListExpr`.
|
||||
*
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
|
||||
private import codeql.rust.elements.internal.generated.ArrayListExpr
|
||||
private import codeql.rust.elements.internal.generated.Raw
|
||||
private import codeql.rust.elements.internal.generated.Synth
|
||||
private import codeql.rust.elements.Expr
|
||||
|
||||
/**
|
||||
* INTERNAL: This module contains the customizable definition of `ArrayListExpr` and should not
|
||||
* be referenced directly.
|
||||
*/
|
||||
module Impl {
|
||||
// the following QLdoc is generated: if you need to edit it, do it in the schema file
|
||||
/**
|
||||
* An array expression with a list of elements. For example:
|
||||
* ```rust
|
||||
* [1, 2, 3];
|
||||
* ```
|
||||
*/
|
||||
class ArrayListExpr extends Generated::ArrayListExpr {
|
||||
override string toString() { result = "[...]" }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
/**
|
||||
* This module defines the hook used internally to tweak the characteristic predicate of
|
||||
* `ArrayRepeatExpr` synthesized instances.
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
|
||||
private import codeql.rust.elements.internal.generated.Raw
|
||||
|
||||
/**
|
||||
* The characteristic predicate of `ArrayRepeatExpr` synthesized instances.
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
predicate constructArrayRepeatExpr(Raw::ArrayExprInternal id) { id.isSemicolon() }
|
||||
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* This module provides a hand-modifiable wrapper around the generated class `ArrayRepeatExpr`.
|
||||
*
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
|
||||
private import codeql.rust.elements.internal.generated.ArrayRepeatExpr
|
||||
private import codeql.rust.elements.internal.generated.Raw
|
||||
private import codeql.rust.elements.internal.generated.Synth
|
||||
|
||||
/**
|
||||
* INTERNAL: This module contains the customizable definition of `ArrayRepeatExpr` and should not
|
||||
* be referenced directly.
|
||||
*/
|
||||
module Impl {
|
||||
// the following QLdoc is generated: if you need to edit it, do it in the schema file
|
||||
/**
|
||||
* An array expression with a repeat operand and a repeat length. For example:
|
||||
* ```rust
|
||||
* [1; 10];
|
||||
* ```
|
||||
*/
|
||||
class ArrayRepeatExpr extends Generated::ArrayRepeatExpr {
|
||||
override string toString() {
|
||||
result =
|
||||
"[" + this.getRepeatOperand().toAbbreviatedString() + "; " +
|
||||
this.getRepeatLength().toAbbreviatedString() + "]"
|
||||
}
|
||||
|
||||
override Expr getRepeatOperand() { result = this.getExpr(0) }
|
||||
|
||||
override Expr getRepeatLength() { result = this.getExpr(1) }
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// generated by codegen, remove this comment if you wish to edit this file
|
||||
/**
|
||||
* This module provides a hand-modifiable wrapper around the generated class `TupleStructPat`.
|
||||
*
|
||||
@@ -11,7 +12,6 @@ private import codeql.rust.elements.internal.generated.TupleStructPat
|
||||
* be referenced directly.
|
||||
*/
|
||||
module Impl {
|
||||
// the following QLdoc is generated: if you need to edit it, do it in the schema file
|
||||
/**
|
||||
* A tuple struct pattern. For example:
|
||||
* ```rust
|
||||
@@ -22,7 +22,5 @@ module Impl {
|
||||
* };
|
||||
* ```
|
||||
*/
|
||||
class TupleStructPat extends Generated::TupleStructPat {
|
||||
override string toString() { result = this.getPath().toAbbreviatedString() + "(...)" }
|
||||
}
|
||||
class TupleStructPat extends Generated::TupleStructPat { }
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl
|
||||
*/
|
||||
module Generated {
|
||||
/**
|
||||
* An array expression. For example:
|
||||
* The base class for array expressions. For example:
|
||||
* ```rust
|
||||
* [1, 2, 3];
|
||||
* [1; 10];
|
||||
@@ -25,33 +25,10 @@ module Generated {
|
||||
* Use the subclass `ArrayExpr`, where the following predicates are available.
|
||||
*/
|
||||
class ArrayExpr extends Synth::TArrayExpr, ExprImpl::Expr {
|
||||
override string getAPrimaryQlClass() { result = "ArrayExpr" }
|
||||
|
||||
/**
|
||||
* Gets the `index`th attr of this array expression (0-based).
|
||||
*/
|
||||
Attr getAttr(int index) {
|
||||
result =
|
||||
Synth::convertAttrFromRaw(Synth::convertArrayExprToRaw(this).(Raw::ArrayExpr).getAttr(index))
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets any of the attrs of this array expression.
|
||||
*/
|
||||
final Attr getAnAttr() { result = this.getAttr(_) }
|
||||
|
||||
/**
|
||||
* Gets the number of attrs of this array expression.
|
||||
*/
|
||||
final int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) }
|
||||
|
||||
/**
|
||||
* Gets the `index`th expression of this array expression (0-based).
|
||||
*/
|
||||
Expr getExpr(int index) {
|
||||
result =
|
||||
Synth::convertExprFromRaw(Synth::convertArrayExprToRaw(this).(Raw::ArrayExpr).getExpr(index))
|
||||
}
|
||||
Expr getExpr(int index) { none() }
|
||||
|
||||
/**
|
||||
* Gets any of the expressions of this array expression.
|
||||
@@ -62,5 +39,20 @@ module Generated {
|
||||
* Gets the number of expressions of this array expression.
|
||||
*/
|
||||
final int getNumberOfExprs() { result = count(int i | exists(this.getExpr(i))) }
|
||||
|
||||
/**
|
||||
* Gets the `index`th attr of this array expression (0-based).
|
||||
*/
|
||||
Attr getAttr(int index) { none() }
|
||||
|
||||
/**
|
||||
* Gets any of the attrs of this array expression.
|
||||
*/
|
||||
final Attr getAnAttr() { result = this.getAttr(_) }
|
||||
|
||||
/**
|
||||
* Gets the number of attrs of this array expression.
|
||||
*/
|
||||
final int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) }
|
||||
}
|
||||
}
|
||||
|
||||
72
rust/ql/lib/codeql/rust/elements/internal/generated/ArrayExprInternal.qll
generated
Normal file
72
rust/ql/lib/codeql/rust/elements/internal/generated/ArrayExprInternal.qll
generated
Normal file
@@ -0,0 +1,72 @@
|
||||
// generated by codegen, do not edit
|
||||
/**
|
||||
* This module provides the generated definition of `ArrayExprInternal`.
|
||||
* INTERNAL: Do not import directly.
|
||||
*/
|
||||
|
||||
private import codeql.rust.elements.internal.generated.Synth
|
||||
private import codeql.rust.elements.internal.generated.Raw
|
||||
import codeql.rust.elements.Attr
|
||||
import codeql.rust.elements.Expr
|
||||
import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl
|
||||
|
||||
/**
|
||||
* INTERNAL: This module contains the fully generated definition of `ArrayExprInternal` and should not
|
||||
* be referenced directly.
|
||||
*/
|
||||
module Generated {
|
||||
/**
|
||||
* INTERNAL: Do not reference the `Generated::ArrayExprInternal` class directly.
|
||||
* Use the subclass `ArrayExprInternal`, where the following predicates are available.
|
||||
*/
|
||||
class ArrayExprInternal extends Synth::TArrayExprInternal, ExprImpl::Expr {
|
||||
override string getAPrimaryQlClass() { result = "ArrayExprInternal" }
|
||||
|
||||
/**
|
||||
* Gets the `index`th attr of this array expression internal (0-based).
|
||||
*/
|
||||
Attr getAttr(int index) {
|
||||
result =
|
||||
Synth::convertAttrFromRaw(Synth::convertArrayExprInternalToRaw(this)
|
||||
.(Raw::ArrayExprInternal)
|
||||
.getAttr(index))
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets any of the attrs of this array expression internal.
|
||||
*/
|
||||
final Attr getAnAttr() { result = this.getAttr(_) }
|
||||
|
||||
/**
|
||||
* Gets the number of attrs of this array expression internal.
|
||||
*/
|
||||
final int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) }
|
||||
|
||||
/**
|
||||
* Gets the `index`th expression of this array expression internal (0-based).
|
||||
*/
|
||||
Expr getExpr(int index) {
|
||||
result =
|
||||
Synth::convertExprFromRaw(Synth::convertArrayExprInternalToRaw(this)
|
||||
.(Raw::ArrayExprInternal)
|
||||
.getExpr(index))
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets any of the expressions of this array expression internal.
|
||||
*/
|
||||
final Expr getAnExpr() { result = this.getExpr(_) }
|
||||
|
||||
/**
|
||||
* Gets the number of expressions of this array expression internal.
|
||||
*/
|
||||
final int getNumberOfExprs() { result = count(int i | exists(this.getExpr(i))) }
|
||||
|
||||
/**
|
||||
* Holds if this array expression internal is semicolon.
|
||||
*/
|
||||
predicate isSemicolon() {
|
||||
Synth::convertArrayExprInternalToRaw(this).(Raw::ArrayExprInternal).isSemicolon()
|
||||
}
|
||||
}
|
||||
}
|
||||
27
rust/ql/lib/codeql/rust/elements/internal/generated/ArrayListExpr.qll
generated
Normal file
27
rust/ql/lib/codeql/rust/elements/internal/generated/ArrayListExpr.qll
generated
Normal file
@@ -0,0 +1,27 @@
|
||||
// generated by codegen, do not edit
|
||||
/**
|
||||
* This module provides the generated definition of `ArrayListExpr`.
|
||||
* INTERNAL: Do not import directly.
|
||||
*/
|
||||
|
||||
private import codeql.rust.elements.internal.generated.Synth
|
||||
private import codeql.rust.elements.internal.generated.Raw
|
||||
import codeql.rust.elements.internal.ArrayExprImpl::Impl as ArrayExprImpl
|
||||
|
||||
/**
|
||||
* INTERNAL: This module contains the fully generated definition of `ArrayListExpr` and should not
|
||||
* be referenced directly.
|
||||
*/
|
||||
module Generated {
|
||||
/**
|
||||
* An array expression with a list of elements. For example:
|
||||
* ```rust
|
||||
* [1, 2, 3];
|
||||
* ```
|
||||
* INTERNAL: Do not reference the `Generated::ArrayListExpr` class directly.
|
||||
* Use the subclass `ArrayListExpr`, where the following predicates are available.
|
||||
*/
|
||||
class ArrayListExpr extends Synth::TArrayListExpr, ArrayExprImpl::ArrayExpr {
|
||||
override string getAPrimaryQlClass() { result = "ArrayListExpr" }
|
||||
}
|
||||
}
|
||||
38
rust/ql/lib/codeql/rust/elements/internal/generated/ArrayRepeatExpr.qll
generated
Normal file
38
rust/ql/lib/codeql/rust/elements/internal/generated/ArrayRepeatExpr.qll
generated
Normal file
@@ -0,0 +1,38 @@
|
||||
// generated by codegen, do not edit
|
||||
/**
|
||||
* This module provides the generated definition of `ArrayRepeatExpr`.
|
||||
* INTERNAL: Do not import directly.
|
||||
*/
|
||||
|
||||
private import codeql.rust.elements.internal.generated.Synth
|
||||
private import codeql.rust.elements.internal.generated.Raw
|
||||
import codeql.rust.elements.internal.ArrayExprImpl::Impl as ArrayExprImpl
|
||||
import codeql.rust.elements.Expr
|
||||
|
||||
/**
|
||||
* INTERNAL: This module contains the fully generated definition of `ArrayRepeatExpr` and should not
|
||||
* be referenced directly.
|
||||
*/
|
||||
module Generated {
|
||||
/**
|
||||
* An array expression with a repeat operand and a repeat length. For example:
|
||||
* ```rust
|
||||
* [1; 10];
|
||||
* ```
|
||||
* INTERNAL: Do not reference the `Generated::ArrayRepeatExpr` class directly.
|
||||
* Use the subclass `ArrayRepeatExpr`, where the following predicates are available.
|
||||
*/
|
||||
class ArrayRepeatExpr extends Synth::TArrayRepeatExpr, ArrayExprImpl::ArrayExpr {
|
||||
override string getAPrimaryQlClass() { result = "ArrayRepeatExpr" }
|
||||
|
||||
/**
|
||||
* Gets the repeat operand of this array repeat expression.
|
||||
*/
|
||||
Expr getRepeatOperand() { none() }
|
||||
|
||||
/**
|
||||
* Gets the repeat length of this array repeat expression.
|
||||
*/
|
||||
Expr getRepeatLength() { none() }
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@
|
||||
*/
|
||||
|
||||
import codeql.rust.elements
|
||||
import codeql.rust.elements.internal.ArrayExprInternal
|
||||
|
||||
private module Impl {
|
||||
private Element getImmediateChildOfElement(Element e, int index, string partialPredicateCall) {
|
||||
@@ -1208,6 +1209,29 @@ private module Impl {
|
||||
}
|
||||
|
||||
private Element getImmediateChildOfArrayExpr(ArrayExpr e, int index, string partialPredicateCall) {
|
||||
exists(int b, int bExpr, int n, int nExpr, int nAttr |
|
||||
b = 0 and
|
||||
bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
|
||||
n = bExpr and
|
||||
nExpr = n + 1 + max(int i | i = -1 or exists(e.getExpr(i)) | i) and
|
||||
nAttr = nExpr + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and
|
||||
(
|
||||
none()
|
||||
or
|
||||
result = getImmediateChildOfExpr(e, index - b, partialPredicateCall)
|
||||
or
|
||||
result = e.getExpr(index - n) and
|
||||
partialPredicateCall = "Expr(" + (index - n).toString() + ")"
|
||||
or
|
||||
result = e.getAttr(index - nExpr) and
|
||||
partialPredicateCall = "Attr(" + (index - nExpr).toString() + ")"
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private Element getImmediateChildOfArrayExprInternal(
|
||||
ArrayExprInternal e, int index, string partialPredicateCall
|
||||
) {
|
||||
exists(int b, int bExpr, int n, int nAttr, int nExpr |
|
||||
b = 0 and
|
||||
bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
|
||||
@@ -2723,6 +2747,44 @@ private module Impl {
|
||||
)
|
||||
}
|
||||
|
||||
private Element getImmediateChildOfArrayListExpr(
|
||||
ArrayListExpr e, int index, string partialPredicateCall
|
||||
) {
|
||||
exists(int b, int bArrayExpr, int n |
|
||||
b = 0 and
|
||||
bArrayExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfArrayExpr(e, i, _)) | i) and
|
||||
n = bArrayExpr and
|
||||
(
|
||||
none()
|
||||
or
|
||||
result = getImmediateChildOfArrayExpr(e, index - b, partialPredicateCall)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private Element getImmediateChildOfArrayRepeatExpr(
|
||||
ArrayRepeatExpr e, int index, string partialPredicateCall
|
||||
) {
|
||||
exists(int b, int bArrayExpr, int n, int nRepeatOperand, int nRepeatLength |
|
||||
b = 0 and
|
||||
bArrayExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfArrayExpr(e, i, _)) | i) and
|
||||
n = bArrayExpr and
|
||||
nRepeatOperand = n + 1 and
|
||||
nRepeatLength = nRepeatOperand + 1 and
|
||||
(
|
||||
none()
|
||||
or
|
||||
result = getImmediateChildOfArrayExpr(e, index - b, partialPredicateCall)
|
||||
or
|
||||
index = n and result = e.getRepeatOperand() and partialPredicateCall = "RepeatOperand()"
|
||||
or
|
||||
index = nRepeatOperand and
|
||||
result = e.getRepeatLength() and
|
||||
partialPredicateCall = "RepeatLength()"
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private Element getImmediateChildOfBlockExpr(BlockExpr e, int index, string partialPredicateCall) {
|
||||
exists(int b, int bLabelableExpr, int n, int nAttr, int nStmtList |
|
||||
b = 0 and
|
||||
@@ -3720,7 +3782,7 @@ private module Impl {
|
||||
or
|
||||
result = getImmediateChildOfWherePred(e, index, partialAccessor)
|
||||
or
|
||||
result = getImmediateChildOfArrayExpr(e, index, partialAccessor)
|
||||
result = getImmediateChildOfArrayExprInternal(e, index, partialAccessor)
|
||||
or
|
||||
result = getImmediateChildOfArrayType(e, index, partialAccessor)
|
||||
or
|
||||
@@ -3860,6 +3922,10 @@ private module Impl {
|
||||
or
|
||||
result = getImmediateChildOfYieldExpr(e, index, partialAccessor)
|
||||
or
|
||||
result = getImmediateChildOfArrayListExpr(e, index, partialAccessor)
|
||||
or
|
||||
result = getImmediateChildOfArrayRepeatExpr(e, index, partialAccessor)
|
||||
or
|
||||
result = getImmediateChildOfBlockExpr(e, index, partialAccessor)
|
||||
or
|
||||
result = getImmediateChildOfCallExpr(e, index, partialAccessor)
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
* This module exports all modules providing `Element` subclasses.
|
||||
*/
|
||||
|
||||
import codeql.rust.elements.internal.ArrayListExprConstructor
|
||||
import codeql.rust.elements.internal.ArrayRepeatExprConstructor
|
||||
import codeql.rust.elements.internal.FormatConstructor
|
||||
import codeql.rust.elements.internal.FormatArgumentConstructor
|
||||
import codeql.rust.elements.internal.FormatTemplateVariableAccessConstructor
|
||||
|
||||
@@ -1126,24 +1126,24 @@ module Raw {
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
* An array expression. For example:
|
||||
* ```rust
|
||||
* [1, 2, 3];
|
||||
* [1; 10];
|
||||
* ```
|
||||
*/
|
||||
class ArrayExpr extends @array_expr, Expr {
|
||||
override string toString() { result = "ArrayExpr" }
|
||||
class ArrayExprInternal extends @array_expr_internal, Expr {
|
||||
override string toString() { result = "ArrayExprInternal" }
|
||||
|
||||
/**
|
||||
* Gets the `index`th attr of this array expression (0-based).
|
||||
* Gets the `index`th attr of this array expression internal (0-based).
|
||||
*/
|
||||
Attr getAttr(int index) { array_expr_attrs(this, index, result) }
|
||||
Attr getAttr(int index) { array_expr_internal_attrs(this, index, result) }
|
||||
|
||||
/**
|
||||
* Gets the `index`th expression of this array expression (0-based).
|
||||
* Gets the `index`th expression of this array expression internal (0-based).
|
||||
*/
|
||||
Expr getExpr(int index) { array_expr_exprs(this, index, result) }
|
||||
Expr getExpr(int index) { array_expr_internal_exprs(this, index, result) }
|
||||
|
||||
/**
|
||||
* Holds if this array expression internal is semicolon.
|
||||
*/
|
||||
predicate isSemicolon() { array_expr_internal_is_semicolon(this) }
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -25,7 +25,15 @@ module Synth {
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
TArrayExpr(Raw::ArrayExpr id) { constructArrayExpr(id) } or
|
||||
TArrayExprInternal(Raw::ArrayExprInternal id) { constructArrayExprInternal(id) } or
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
TArrayListExpr(Raw::ArrayExprInternal id) { constructArrayListExpr(id) } or
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
TArrayRepeatExpr(Raw::ArrayExprInternal id) { constructArrayRepeatExpr(id) } or
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
@@ -616,6 +624,11 @@ module Synth {
|
||||
*/
|
||||
class TAddressable = TItem or TVariant;
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
class TArrayExpr = TArrayListExpr or TArrayRepeatExpr;
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
@@ -650,8 +663,8 @@ module Synth {
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
class TExpr =
|
||||
TArrayExpr or TAsmExpr or TAwaitExpr or TBecomeExpr or TBinaryExpr or TBreakExpr or
|
||||
TCallExprBase or TCastExpr or TClosureExpr or TContinueExpr or TFieldExpr or
|
||||
TArrayExpr or TArrayExprInternal or TAsmExpr or TAwaitExpr or TBecomeExpr or TBinaryExpr or
|
||||
TBreakExpr or TCallExprBase or TCastExpr or TClosureExpr or TContinueExpr or TFieldExpr or
|
||||
TFormatArgsExpr or TIfExpr or TIndexExpr or TLabelableExpr or TLetExpr or TLiteralExpr or
|
||||
TMacroExpr or TMatchExpr or TOffsetOfExpr or TParenExpr or TPathExprBase or TPrefixExpr or
|
||||
TRangeExpr or TRecordExpr or TRefExpr or TReturnExpr or TTryExpr or TTupleExpr or
|
||||
@@ -765,9 +778,23 @@ module Synth {
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
* Converts a raw element to a synthesized `TArrayExpr`, if possible.
|
||||
* Converts a raw element to a synthesized `TArrayExprInternal`, if possible.
|
||||
*/
|
||||
TArrayExpr convertArrayExprFromRaw(Raw::Element e) { result = TArrayExpr(e) }
|
||||
TArrayExprInternal convertArrayExprInternalFromRaw(Raw::Element e) {
|
||||
result = TArrayExprInternal(e)
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
* Converts a raw element to a synthesized `TArrayListExpr`, if possible.
|
||||
*/
|
||||
TArrayListExpr convertArrayListExprFromRaw(Raw::Element e) { result = TArrayListExpr(e) }
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
* Converts a raw element to a synthesized `TArrayRepeatExpr`, if possible.
|
||||
*/
|
||||
TArrayRepeatExpr convertArrayRepeatExprFromRaw(Raw::Element e) { result = TArrayRepeatExpr(e) }
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
@@ -1649,6 +1676,16 @@ module Synth {
|
||||
result = convertVariantFromRaw(e)
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
* Converts a raw DB element to a synthesized `TArrayExpr`, if possible.
|
||||
*/
|
||||
TArrayExpr convertArrayExprFromRaw(Raw::Element e) {
|
||||
result = convertArrayListExprFromRaw(e)
|
||||
or
|
||||
result = convertArrayRepeatExprFromRaw(e)
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
* Converts a raw DB element to a synthesized `TAssocItem`, if possible.
|
||||
@@ -1822,6 +1859,8 @@ module Synth {
|
||||
TExpr convertExprFromRaw(Raw::Element e) {
|
||||
result = convertArrayExprFromRaw(e)
|
||||
or
|
||||
result = convertArrayExprInternalFromRaw(e)
|
||||
or
|
||||
result = convertAsmExprFromRaw(e)
|
||||
or
|
||||
result = convertAwaitExprFromRaw(e)
|
||||
@@ -2169,9 +2208,23 @@ module Synth {
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
* Converts a synthesized `TArrayExpr` to a raw DB element, if possible.
|
||||
* Converts a synthesized `TArrayExprInternal` to a raw DB element, if possible.
|
||||
*/
|
||||
Raw::Element convertArrayExprToRaw(TArrayExpr e) { e = TArrayExpr(result) }
|
||||
Raw::Element convertArrayExprInternalToRaw(TArrayExprInternal e) {
|
||||
e = TArrayExprInternal(result)
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
* Converts a synthesized `TArrayListExpr` to a raw DB element, if possible.
|
||||
*/
|
||||
Raw::Element convertArrayListExprToRaw(TArrayListExpr e) { e = TArrayListExpr(result) }
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
* Converts a synthesized `TArrayRepeatExpr` to a raw DB element, if possible.
|
||||
*/
|
||||
Raw::Element convertArrayRepeatExprToRaw(TArrayRepeatExpr e) { e = TArrayRepeatExpr(result) }
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
@@ -3051,6 +3104,16 @@ module Synth {
|
||||
result = convertVariantToRaw(e)
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
* Converts a synthesized `TArrayExpr` to a raw DB element, if possible.
|
||||
*/
|
||||
Raw::Element convertArrayExprToRaw(TArrayExpr e) {
|
||||
result = convertArrayListExprToRaw(e)
|
||||
or
|
||||
result = convertArrayRepeatExprToRaw(e)
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
* Converts a synthesized `TAssocItem` to a raw DB element, if possible.
|
||||
@@ -3224,6 +3287,8 @@ module Synth {
|
||||
Raw::Element convertExprToRaw(TExpr e) {
|
||||
result = convertArrayExprToRaw(e)
|
||||
or
|
||||
result = convertArrayExprInternalToRaw(e)
|
||||
or
|
||||
result = convertAsmExprToRaw(e)
|
||||
or
|
||||
result = convertAwaitExprToRaw(e)
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
|
||||
import codeql.rust.elements.internal.AbiConstructor
|
||||
import codeql.rust.elements.internal.ArgListConstructor
|
||||
import codeql.rust.elements.internal.ArrayExprConstructor
|
||||
import codeql.rust.elements.internal.ArrayExprInternalConstructor
|
||||
import codeql.rust.elements.internal.ArrayListExprConstructor
|
||||
import codeql.rust.elements.internal.ArrayRepeatExprConstructor
|
||||
import codeql.rust.elements.internal.ArrayTypeConstructor
|
||||
import codeql.rust.elements.internal.AsmExprConstructor
|
||||
import codeql.rust.elements.internal.AssocItemListConstructor
|
||||
|
||||
@@ -304,7 +304,7 @@ closure_binder_generic_param_lists(
|
||||
);
|
||||
|
||||
@expr =
|
||||
@array_expr
|
||||
@array_expr_internal
|
||||
| @asm_expr
|
||||
| @await_expr
|
||||
| @become_expr
|
||||
@@ -1104,24 +1104,29 @@ where_pred_type_bound_lists(
|
||||
int type_bound_list: @type_bound_list ref
|
||||
);
|
||||
|
||||
array_exprs(
|
||||
unique int id: @array_expr
|
||||
array_expr_internals(
|
||||
unique int id: @array_expr_internal
|
||||
);
|
||||
|
||||
#keyset[id, index]
|
||||
array_expr_attrs(
|
||||
int id: @array_expr ref,
|
||||
array_expr_internal_attrs(
|
||||
int id: @array_expr_internal ref,
|
||||
int index: int ref,
|
||||
int attr: @attr ref
|
||||
);
|
||||
|
||||
#keyset[id, index]
|
||||
array_expr_exprs(
|
||||
int id: @array_expr ref,
|
||||
array_expr_internal_exprs(
|
||||
int id: @array_expr_internal ref,
|
||||
int index: int ref,
|
||||
int expr: @expr ref
|
||||
);
|
||||
|
||||
#keyset[id]
|
||||
array_expr_internal_is_semicolon(
|
||||
int id: @array_expr_internal ref
|
||||
);
|
||||
|
||||
array_types(
|
||||
unique int id: @array_type
|
||||
);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
Abi/gen_abi.rs 5d2f6eccb2bab86080188be9700ab64a34fa6e8e8e7b08f65a5c97d1de0a900c 5d2f6eccb2bab86080188be9700ab64a34fa6e8e8e7b08f65a5c97d1de0a900c
|
||||
ArgList/gen_arg_list.rs 569d0b9b0479de5453ae0f89e4f90e32b02ee84dfb3d815821d722ece6f75b64 569d0b9b0479de5453ae0f89e4f90e32b02ee84dfb3d815821d722ece6f75b64
|
||||
ArrayExpr/gen_array_expr.rs e4863b428ea2b5cfd59773f201e58fd905f7363512e54e4fdebd02c297bd85ff e4863b428ea2b5cfd59773f201e58fd905f7363512e54e4fdebd02c297bd85ff
|
||||
ArrayListExpr/gen_array_list_expr.rs 99a1233b77a6b6eb0a538025688ca5a0824118a123bef0fe3f92a81834b17924 99a1233b77a6b6eb0a538025688ca5a0824118a123bef0fe3f92a81834b17924
|
||||
ArrayRepeatExpr/gen_array_repeat_expr.rs 8cc7c0a435a02864290db6a498a5fcf227d8ee7ed87ee1943ad4d326c8314a0e 8cc7c0a435a02864290db6a498a5fcf227d8ee7ed87ee1943ad4d326c8314a0e
|
||||
ArrayType/gen_array_type.rs 3cb5f35006648d676ead1088aa330cd34beaabaaad7b9aa952e6375bc1cec5cb 3cb5f35006648d676ead1088aa330cd34beaabaaad7b9aa952e6375bc1cec5cb
|
||||
AsmExpr/gen_asm_expr.rs 00b21fd66fe12785174bd0160d0317a6c78ff05dbba73313eb07b56531cf3158 00b21fd66fe12785174bd0160d0317a6c78ff05dbba73313eb07b56531cf3158
|
||||
AssocTypeArg/gen_assoc_type_arg.rs 00ec0e22c4d73338de605dc3b1b1306bc83a95f87376ce976f08d2f9923cc2b4 00ec0e22c4d73338de605dc3b1b1306bc83a95f87376ce976f08d2f9923cc2b4
|
||||
|
||||
3
rust/ql/test/extractor-tests/generated/.gitattributes
generated
vendored
3
rust/ql/test/extractor-tests/generated/.gitattributes
generated
vendored
@@ -2,7 +2,8 @@
|
||||
/.gitattributes linguist-generated
|
||||
/Abi/gen_abi.rs linguist-generated
|
||||
/ArgList/gen_arg_list.rs linguist-generated
|
||||
/ArrayExpr/gen_array_expr.rs linguist-generated
|
||||
/ArrayListExpr/gen_array_list_expr.rs linguist-generated
|
||||
/ArrayRepeatExpr/gen_array_repeat_expr.rs linguist-generated
|
||||
/ArrayType/gen_array_type.rs linguist-generated
|
||||
/AsmExpr/gen_asm_expr.rs linguist-generated
|
||||
/AssocTypeArg/gen_assoc_type_arg.rs linguist-generated
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
| gen_array_expr.rs:5:5:5:13 | [...] | getNumberOfAttrs: | 0 | getNumberOfExprs: | 3 |
|
||||
| gen_array_expr.rs:6:5:6:11 | [...] | getNumberOfAttrs: | 0 | getNumberOfExprs: | 2 |
|
||||
@@ -1,11 +0,0 @@
|
||||
// generated by codegen, do not edit
|
||||
import codeql.rust.elements
|
||||
import TestUtils
|
||||
|
||||
from ArrayExpr x, int getNumberOfAttrs, int getNumberOfExprs
|
||||
where
|
||||
toBeTested(x) and
|
||||
not x.isUnknown() and
|
||||
getNumberOfAttrs = x.getNumberOfAttrs() and
|
||||
getNumberOfExprs = x.getNumberOfExprs()
|
||||
select x, "getNumberOfAttrs:", getNumberOfAttrs, "getNumberOfExprs:", getNumberOfExprs
|
||||
@@ -1,5 +0,0 @@
|
||||
| gen_array_expr.rs:5:5:5:13 | [...] | 0 | gen_array_expr.rs:5:6:5:6 | 1 |
|
||||
| gen_array_expr.rs:5:5:5:13 | [...] | 1 | gen_array_expr.rs:5:9:5:9 | 2 |
|
||||
| gen_array_expr.rs:5:5:5:13 | [...] | 2 | gen_array_expr.rs:5:12:5:12 | 3 |
|
||||
| gen_array_expr.rs:6:5:6:11 | [...] | 0 | gen_array_expr.rs:6:6:6:6 | 1 |
|
||||
| gen_array_expr.rs:6:5:6:11 | [...] | 1 | gen_array_expr.rs:6:9:6:10 | 10 |
|
||||
@@ -1,7 +0,0 @@
|
||||
// generated by codegen, do not edit
|
||||
|
||||
fn test_array_expr() -> () {
|
||||
// An array expression. For example:
|
||||
[1, 2, 3];
|
||||
[1; 10];
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
| gen_array_list_expr.rs:5:5:5:13 | [...] | getNumberOfExprs: | 3 | getNumberOfAttrs: | 0 |
|
||||
11
rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql
generated
Normal file
11
rust/ql/test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql
generated
Normal file
@@ -0,0 +1,11 @@
|
||||
// generated by codegen, do not edit
|
||||
import codeql.rust.elements
|
||||
import TestUtils
|
||||
|
||||
from ArrayListExpr x, int getNumberOfExprs, int getNumberOfAttrs
|
||||
where
|
||||
toBeTested(x) and
|
||||
not x.isUnknown() and
|
||||
getNumberOfExprs = x.getNumberOfExprs() and
|
||||
getNumberOfAttrs = x.getNumberOfAttrs()
|
||||
select x, "getNumberOfExprs:", getNumberOfExprs, "getNumberOfAttrs:", getNumberOfAttrs
|
||||
@@ -2,6 +2,6 @@
|
||||
import codeql.rust.elements
|
||||
import TestUtils
|
||||
|
||||
from ArrayExpr x, int index
|
||||
from ArrayListExpr x, int index
|
||||
where toBeTested(x) and not x.isUnknown()
|
||||
select x, index, x.getAttr(index)
|
||||
@@ -0,0 +1,3 @@
|
||||
| gen_array_list_expr.rs:5:5:5:13 | [...] | 0 | gen_array_list_expr.rs:5:6:5:6 | 1 |
|
||||
| gen_array_list_expr.rs:5:5:5:13 | [...] | 1 | gen_array_list_expr.rs:5:9:5:9 | 2 |
|
||||
| gen_array_list_expr.rs:5:5:5:13 | [...] | 2 | gen_array_list_expr.rs:5:12:5:12 | 3 |
|
||||
@@ -2,6 +2,6 @@
|
||||
import codeql.rust.elements
|
||||
import TestUtils
|
||||
|
||||
from ArrayExpr x, int index
|
||||
from ArrayListExpr x, int index
|
||||
where toBeTested(x) and not x.isUnknown()
|
||||
select x, index, x.getExpr(index)
|
||||
6
rust/ql/test/extractor-tests/generated/ArrayListExpr/gen_array_list_expr.rs
generated
Normal file
6
rust/ql/test/extractor-tests/generated/ArrayListExpr/gen_array_list_expr.rs
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
// generated by codegen, do not edit
|
||||
|
||||
fn test_array_list_expr() -> () {
|
||||
// An array expression with a list of elements. For example:
|
||||
[1, 2, 3];
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
| gen_array_repeat_expr.rs:5:5:5:11 | [1; 10] | getNumberOfExprs: | 2 | getNumberOfAttrs: | 0 | getRepeatOperand: | gen_array_repeat_expr.rs:5:6:5:6 | 1 | getRepeatLength: | gen_array_repeat_expr.rs:5:9:5:10 | 10 |
|
||||
16
rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql
generated
Normal file
16
rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql
generated
Normal file
@@ -0,0 +1,16 @@
|
||||
// generated by codegen, do not edit
|
||||
import codeql.rust.elements
|
||||
import TestUtils
|
||||
|
||||
from
|
||||
ArrayRepeatExpr x, int getNumberOfExprs, int getNumberOfAttrs, Expr getRepeatOperand,
|
||||
Expr getRepeatLength
|
||||
where
|
||||
toBeTested(x) and
|
||||
not x.isUnknown() and
|
||||
getNumberOfExprs = x.getNumberOfExprs() and
|
||||
getNumberOfAttrs = x.getNumberOfAttrs() and
|
||||
getRepeatOperand = x.getRepeatOperand() and
|
||||
getRepeatLength = x.getRepeatLength()
|
||||
select x, "getNumberOfExprs:", getNumberOfExprs, "getNumberOfAttrs:", getNumberOfAttrs,
|
||||
"getRepeatOperand:", getRepeatOperand, "getRepeatLength:", getRepeatLength
|
||||
7
rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getAttr.ql
generated
Normal file
7
rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getAttr.ql
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
// generated by codegen, do not edit
|
||||
import codeql.rust.elements
|
||||
import TestUtils
|
||||
|
||||
from ArrayRepeatExpr x, int index
|
||||
where toBeTested(x) and not x.isUnknown()
|
||||
select x, index, x.getAttr(index)
|
||||
@@ -0,0 +1,2 @@
|
||||
| gen_array_repeat_expr.rs:5:5:5:11 | [1; 10] | 0 | gen_array_repeat_expr.rs:5:6:5:6 | 1 |
|
||||
| gen_array_repeat_expr.rs:5:5:5:11 | [1; 10] | 1 | gen_array_repeat_expr.rs:5:9:5:10 | 10 |
|
||||
7
rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getExpr.ql
generated
Normal file
7
rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getExpr.ql
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
// generated by codegen, do not edit
|
||||
import codeql.rust.elements
|
||||
import TestUtils
|
||||
|
||||
from ArrayRepeatExpr x, int index
|
||||
where toBeTested(x) and not x.isUnknown()
|
||||
select x, index, x.getExpr(index)
|
||||
6
rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/gen_array_repeat_expr.rs
generated
Normal file
6
rust/ql/test/extractor-tests/generated/ArrayRepeatExpr/gen_array_repeat_expr.rs
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
// generated by codegen, do not edit
|
||||
|
||||
fn test_array_repeat_expr() -> () {
|
||||
// An array expression with a repeat operand and a repeat length. For example:
|
||||
[1; 10];
|
||||
}
|
||||
@@ -552,15 +552,45 @@ class _:
|
||||
"""
|
||||
|
||||
|
||||
@annotate(ArrayExpr, cfg = True)
|
||||
@annotate(ArrayExprInternal)
|
||||
@ql.internal
|
||||
@qltest.skip
|
||||
class _:
|
||||
pass
|
||||
|
||||
class ArrayExpr(Expr):
|
||||
"""
|
||||
An array expression. For example:
|
||||
The base class for array expressions. For example:
|
||||
```rust
|
||||
[1, 2, 3];
|
||||
[1; 10];
|
||||
```
|
||||
"""
|
||||
exprs: list[Expr] | child
|
||||
attrs: list[Attr] | child
|
||||
|
||||
@synth.from_class(ArrayExprInternal)
|
||||
class ArrayListExpr(ArrayExpr):
|
||||
"""
|
||||
An array expression with a list of elements. For example:
|
||||
```rust
|
||||
[1, 2, 3];
|
||||
```
|
||||
"""
|
||||
__cfg__ = True
|
||||
|
||||
@synth.from_class(ArrayExprInternal)
|
||||
class ArrayRepeatExpr(ArrayExpr):
|
||||
"""
|
||||
An array expression with a repeat operand and a repeat length. For example:
|
||||
```rust
|
||||
[1; 10];
|
||||
```
|
||||
"""
|
||||
__cfg__ = True
|
||||
|
||||
repeat_operand: Expr | child
|
||||
repeat_length: Expr | child
|
||||
|
||||
|
||||
@annotate(LiteralExpr, cfg = True)
|
||||
|
||||
3
rust/schema/ast.py
generated
3
rust/schema/ast.py
generated
@@ -38,9 +38,10 @@ class Abi(AstNode):
|
||||
class ArgList(AstNode):
|
||||
args: list["Expr"] | child
|
||||
|
||||
class ArrayExpr(Expr):
|
||||
class ArrayExprInternal(Expr):
|
||||
attrs: list["Attr"] | child
|
||||
exprs: list["Expr"] | child
|
||||
is_semicolon: predicate
|
||||
|
||||
class ArrayType(TypeRef):
|
||||
const_arg: optional["ConstArg"] | child
|
||||
|
||||
Reference in New Issue
Block a user