Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitbfc43d5

Browse files
committed
Rust: Refactor type inference to use newTypeItem class
1 parentda99bbf commitbfc43d5

File tree

4 files changed

+83
-144
lines changed

4 files changed

+83
-144
lines changed

‎rust/ql/lib/codeql/rust/frameworks/rustcrypto/RustCrypto.qll‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ class StreamCipherInit extends Cryptography::CryptographicOperation::Range {
3030
// extract the algorithm name from the type of `ce` or its receiver.
3131
exists(Typet,TypePathtp|
3232
t=inferType([call,call.(MethodCall).getReceiver()],tp)and
33-
rawAlgorithmName=t.(StructType).getStruct().(Addressable).getCanonicalPath().splitAt("::")
33+
rawAlgorithmName=
34+
t.(StructType).getTypeItem().(Addressable).getCanonicalPath().splitAt("::")
3435
)and
3536
algorithmName=simplifyAlgorithmName(rawAlgorithmName)and
3637
// only match a known cryptographic algorithm

‎rust/ql/lib/codeql/rust/internal/Type.qll‎

Lines changed: 34 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,8 @@ private predicate dynTraitTypeParameter(Trait trait, AstNode n) {
3232

3333
cached
3434
newtypeTType=
35-
TStruct(Structs){ Stages::TypeInferenceStage::ref()}or
36-
TEnum(Enume)or
35+
TDataType(TypeItemti){ Stages::TypeInferenceStage::ref()}or
3736
TTrait(Traitt)or
38-
TUnion(Unionu)or
3937
TImplTraitType(ImplTraitTypeReprimpl)or
4038
TDynTraitType(Traitt){t=any(DynTraitTypeReprdt).getTrait()}or
4139
TNeverType()or
@@ -92,7 +90,7 @@ abstract class Type extends TType {
9290
classTupleTypeextendsStructType{
9391
privateintarity;
9492

95-
TupleType(){arity=this.getStruct().(Builtins::TupleType).getArity()}
93+
TupleType(){arity=this.getTypeItem().(Builtins::TupleType).getArity()}
9694

9795
/** Gets the arity of this tuple type. */
9896
intgetArity(){result=arity}
@@ -112,48 +110,49 @@ class UnitType extends TupleType {
112110
overridestringtoString(){result="()"}
113111
}
114112

115-
/** A struct type. */
116-
classStructTypeextendsType,TStruct{
117-
privateStructstruct;
113+
classDataTypeextendsType,TDataType{
114+
privateTypeItemtypeItem;
118115

119-
StructType(){this=TStruct(struct)}
116+
DataType(){this=TDataType(typeItem)}
120117

121-
/** Gets thestructthat thisstruct type represents. */
122-
StructgetStruct(){result=struct}
118+
/** Gets thetype itemthat thisdata type represents. */
119+
TypeItemgetTypeItem(){result=typeItem}
123120

124121
overrideTypeParametergetPositionalTypeParameter(inti){
125-
result=TTypeParamTypeParameter(struct.getGenericParamList().getTypeParam(i))
122+
result=TTypeParamTypeParameter(typeItem.getGenericParamList().getTypeParam(i))
126123
}
127124

128125
overrideTypeMentiongetTypeParameterDefault(inti){
129-
result=struct.getGenericParamList().getTypeParam(i).getDefaultType()
126+
result=typeItem.getGenericParamList().getTypeParam(i).getDefaultType()
130127
}
131128

132-
overridestringtoString(){result=struct.getName().getText()}
129+
overridestringtoString(){result=typeItem.getName().getText()}
133130

134-
overrideLocationgetLocation(){result=struct.getLocation()}
131+
overrideLocationgetLocation(){result=typeItem.getLocation()}
135132
}
136133

137-
/** An enum type. */
138-
classEnumTypeextendsType,TEnum{
139-
privateEnumenum;
140-
141-
EnumType(){this=TEnum(enum)}
134+
/** A struct type. */
135+
classStructTypeextendsDataType{
136+
StructType(){super.getTypeItem()instanceofStruct}
142137

143-
/** Gets the enum that this enum type represents. */
144-
EnumgetEnum(){result=enum}
138+
/** Gets the struct that this struct type represents. */
139+
overrideStructgetTypeItem(){result=super.getTypeItem()}
140+
}
145141

146-
overrideTypeParametergetPositionalTypeParameter(inti){
147-
result=TTypeParamTypeParameter(enum.getGenericParamList().getTypeParam(i))
148-
}
142+
/** An enum type. */
143+
classEnumTypeextendsDataType{
144+
EnumType(){super.getTypeItem()instanceofEnum}
149145

150-
overrideTypeMentiongetTypeParameterDefault(inti){
151-
result=enum.getGenericParamList().getTypeParam(i).getDefaultType()
152-
}
146+
/** Gets the enum that this enum type represents. */
147+
overrideEnumgetTypeItem(){result=super.getTypeItem()}
148+
}
153149

154-
overridestringtoString(){result=enum.getName().getText()}
150+
/** A union type. */
151+
classUnionTypeextendsDataType{
152+
UnionType(){super.getTypeItem()instanceofUnion}
155153

156-
overrideLocationgetLocation(){result=enum.getLocation()}
154+
/** Gets the union that this union type represents. */
155+
overrideUniongetTypeItem(){result=super.getTypeItem()}
157156
}
158157

159158
/** A trait type. */
@@ -186,35 +185,13 @@ class TraitType extends Type, TTrait {
186185
overrideLocationgetLocation(){result=trait.getLocation()}
187186
}
188187

189-
/** A union type. */
190-
classUnionTypeextendsType,TUnion{
191-
privateUnionunion;
192-
193-
UnionType(){this=TUnion(union)}
194-
195-
/** Gets the union that this union type represents. */
196-
UniongetUnion(){result=union}
197-
198-
overrideTypeParametergetPositionalTypeParameter(inti){
199-
result=TTypeParamTypeParameter(union.getGenericParamList().getTypeParam(i))
200-
}
201-
202-
overrideTypeMentiongetTypeParameterDefault(inti){
203-
result=union.getGenericParamList().getTypeParam(i).getDefaultType()
204-
}
205-
206-
overridestringtoString(){result=union.getName().getText()}
207-
208-
overrideLocationgetLocation(){result=union.getLocation()}
209-
}
210-
211188
/**
212189
* An array type.
213190
*
214191
* Array types like `[i64; 5]` are modeled as normal generic types.
215192
*/
216193
classArrayTypeextendsStructType{
217-
ArrayType(){this.getStruct()instanceof Builtins::ArrayType}
194+
ArrayType(){this.getTypeItem()instanceof Builtins::ArrayType}
218195

219196
overridestringtoString(){result="[;]"}
220197
}
@@ -231,7 +208,7 @@ TypeParamTypeParameter getArrayTypeParameter() {
231208
* with a single type argument.
232209
*/
233210
classRefTypeextendsStructType{
234-
RefType(){this.getStruct()instanceof Builtins::RefType}
211+
RefType(){this.getTypeItem()instanceof Builtins::RefType}
235212

236213
overridestringtoString(){result="&"}
237214
}
@@ -321,7 +298,7 @@ class ImplTraitReturnType extends ImplTraitType {
321298
* with a single type argument.
322299
*/
323300
classSliceTypeextendsStructType{
324-
SliceType(){this.getStruct()instanceof Builtins::SliceType}
301+
SliceType(){this.getTypeItem()instanceof Builtins::SliceType}
325302

326303
overridestringtoString(){result="[]"}
327304
}
@@ -347,13 +324,13 @@ TypeParamTypeParameter getPtrTypeParameter() {
347324
}
348325

349326
classPtrMutTypeextendsPtrType{
350-
PtrMutType(){this.getStruct()instanceof Builtins::PtrMutType}
327+
PtrMutType(){this.getTypeItem()instanceof Builtins::PtrMutType}
351328

352329
overridestringtoString(){result="*mut"}
353330
}
354331

355332
classPtrConstTypeextendsPtrType{
356-
PtrConstType(){this.getStruct()instanceof Builtins::PtrConstType}
333+
PtrConstType(){this.getTypeItem()instanceof Builtins::PtrConstType}
357334

358335
overridestringtoString(){result="*const"}
359336
}
@@ -615,7 +592,7 @@ pragma[nomagic]
615592
predicatevalidSelfType(Typet){
616593
tinstanceofRefType
617594
or
618-
exists(Structs|t=TStruct(s)|
595+
exists(Structs|t=TDataType(s)|
619596
sinstanceofBoxStructor
620597
sinstanceofRcStructor
621598
sinstanceofArcStructor

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp