mirror of
https://github.com/github/codeql.git
synced 2026-04-30 03:05:15 +02:00
C++: Remove overaggressive line breaks in TranslatedInitialization.qll
This commit is contained in:
@@ -35,8 +35,7 @@ abstract class InitializationContext extends TranslatedElement {
|
||||
* Represents the IR translation of any initialization, whether from an
|
||||
* initializer list or from a direct initializer.
|
||||
*/
|
||||
abstract class TranslatedInitialization extends TranslatedElement,
|
||||
TTranslatedInitialization {
|
||||
abstract class TranslatedInitialization extends TranslatedElement, TTranslatedInitialization {
|
||||
Expr expr;
|
||||
|
||||
TranslatedInitialization() {
|
||||
@@ -78,8 +77,7 @@ abstract class TranslatedInitialization extends TranslatedElement,
|
||||
/**
|
||||
* Represents the IR translation of an initialization from an initializer list.
|
||||
*/
|
||||
abstract class TranslatedListInitialization extends TranslatedInitialization,
|
||||
InitializationContext {
|
||||
abstract class TranslatedListInitialization extends TranslatedInitialization, InitializationContext {
|
||||
override Instruction getFirstInstruction() {
|
||||
result = getChild(0).getFirstInstruction()
|
||||
}
|
||||
@@ -117,8 +115,7 @@ abstract class TranslatedListInitialization extends TranslatedInitialization,
|
||||
* Represents the IR translation of an initialization of a class object from an
|
||||
* initializer list.
|
||||
*/
|
||||
class TranslatedClassListInitialization extends
|
||||
TranslatedListInitialization
|
||||
class TranslatedClassListInitialization extends TranslatedListInitialization
|
||||
{
|
||||
override ClassAggregateLiteral expr;
|
||||
|
||||
@@ -135,8 +132,7 @@ class TranslatedClassListInitialization extends
|
||||
* Represents the IR translation of an initialization of an array from an
|
||||
* initializer list.
|
||||
*/
|
||||
class TranslatedArrayListInitialization extends
|
||||
TranslatedListInitialization {
|
||||
class TranslatedArrayListInitialization extends TranslatedListInitialization {
|
||||
override ArrayAggregateLiteral expr;
|
||||
|
||||
override TranslatedElement getChild(int id) {
|
||||
@@ -175,23 +171,20 @@ abstract class TranslatedDirectInitialization extends TranslatedInitialization {
|
||||
* expression, where the initialization is performed via bitwise copy (as
|
||||
* opposed to a constructor).
|
||||
*/
|
||||
class TranslatedSimpleDirectInitialization extends
|
||||
TranslatedDirectInitialization {
|
||||
class TranslatedSimpleDirectInitialization extends TranslatedDirectInitialization {
|
||||
TranslatedSimpleDirectInitialization() {
|
||||
not expr instanceof ConstructorCall and
|
||||
not expr instanceof StringLiteral
|
||||
}
|
||||
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag,
|
||||
Type resultType, boolean isGLValue) {
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag, Type resultType, boolean isGLValue) {
|
||||
tag = InitializerStoreTag() and
|
||||
opcode instanceof Opcode::Store and
|
||||
resultType = getContext().getTargetType() and
|
||||
isGLValue = false
|
||||
}
|
||||
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag,
|
||||
EdgeKind kind) {
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag, EdgeKind kind) {
|
||||
tag = InitializerStoreTag() and
|
||||
result = getParent().getChildSuccessor(this) and
|
||||
kind instanceof GotoEdge
|
||||
@@ -201,8 +194,7 @@ class TranslatedSimpleDirectInitialization extends
|
||||
child = getInitializer() and result = getInstruction(InitializerStoreTag())
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag,
|
||||
OperandTag operandTag) {
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = InitializerStoreTag() and
|
||||
(
|
||||
(
|
||||
@@ -221,12 +213,10 @@ class TranslatedSimpleDirectInitialization extends
|
||||
* Represents the IR translation of an initialization of an array from a string
|
||||
* literal.
|
||||
*/
|
||||
class TranslatedStringLiteralInitialization extends
|
||||
TranslatedDirectInitialization {
|
||||
class TranslatedStringLiteralInitialization extends TranslatedDirectInitialization {
|
||||
override StringLiteral expr;
|
||||
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag,
|
||||
Type resultType, boolean isGLValue) {
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag, Type resultType, boolean isGLValue) {
|
||||
(
|
||||
// Load the string literal to make it a prvalue of type `char[len]`
|
||||
tag = InitializerLoadStringTag() and
|
||||
@@ -280,8 +270,7 @@ class TranslatedStringLiteralInitialization extends
|
||||
)
|
||||
}
|
||||
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag,
|
||||
EdgeKind kind) {
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag, EdgeKind kind) {
|
||||
kind instanceof GotoEdge and
|
||||
(
|
||||
(
|
||||
@@ -321,8 +310,7 @@ class TranslatedStringLiteralInitialization extends
|
||||
child = getInitializer() and result = getInstruction(InitializerLoadStringTag())
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag,
|
||||
OperandTag operandTag) {
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
(
|
||||
tag = InitializerLoadStringTag() and
|
||||
(
|
||||
@@ -422,17 +410,14 @@ class TranslatedStringLiteralInitialization extends
|
||||
}
|
||||
}
|
||||
|
||||
class TranslatedConstructorInitialization extends
|
||||
TranslatedDirectInitialization, StructorCallContext {
|
||||
class TranslatedConstructorInitialization extends TranslatedDirectInitialization, StructorCallContext {
|
||||
override ConstructorCall expr;
|
||||
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag,
|
||||
Type resultType, boolean isGLValue) {
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag, Type resultType, boolean isGLValue) {
|
||||
none()
|
||||
}
|
||||
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag,
|
||||
EdgeKind kind) {
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag, EdgeKind kind) {
|
||||
none()
|
||||
}
|
||||
|
||||
@@ -440,8 +425,7 @@ class TranslatedConstructorInitialization extends
|
||||
child = getInitializer() and result = getParent().getChildSuccessor(this)
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag,
|
||||
OperandTag operandTag) {
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
none()
|
||||
}
|
||||
|
||||
@@ -454,13 +438,11 @@ class TranslatedConstructorInitialization extends
|
||||
* Gets the `TranslatedFieldInitialization` for field `field` within initializer
|
||||
* list `initList`.
|
||||
*/
|
||||
TranslatedFieldInitialization getTranslatedFieldInitialization(
|
||||
ClassAggregateLiteral initList, Field field) {
|
||||
TranslatedFieldInitialization getTranslatedFieldInitialization(ClassAggregateLiteral initList, Field field) {
|
||||
result.getAST() = initList and result.getField() = field
|
||||
}
|
||||
|
||||
TranslatedFieldInitialization getTranslatedConstructorFieldInitialization(
|
||||
ConstructorFieldInit init) {
|
||||
TranslatedFieldInitialization getTranslatedConstructorFieldInitialization(ConstructorFieldInit init) {
|
||||
result.getAST() = init
|
||||
}
|
||||
|
||||
@@ -496,16 +478,14 @@ abstract class TranslatedFieldInitialization extends TranslatedElement {
|
||||
result = field.getInitializationOrder()
|
||||
}
|
||||
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag,
|
||||
Type resultType, boolean isGLValue) {
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag, Type resultType, boolean isGLValue) {
|
||||
tag = getFieldAddressTag() and
|
||||
opcode instanceof Opcode::FieldAddress and
|
||||
resultType = field.getType().getUnspecifiedType() and
|
||||
isGLValue = true
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag,
|
||||
OperandTag operandTag) {
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = getFieldAddressTag() and
|
||||
operandTag instanceof UnaryOperandTag and
|
||||
result = getParent().(InitializationContext).getTargetAddress()
|
||||
@@ -528,9 +508,8 @@ abstract class TranslatedFieldInitialization extends TranslatedElement {
|
||||
* Represents the IR translation of the initialization of a field from an
|
||||
* explicit element in an initializer list.
|
||||
*/
|
||||
class TranslatedExplicitFieldInitialization extends
|
||||
TranslatedFieldInitialization, InitializationContext,
|
||||
TTranslatedExplicitFieldInitialization {
|
||||
class TranslatedExplicitFieldInitialization extends TranslatedFieldInitialization, InitializationContext,
|
||||
TTranslatedExplicitFieldInitialization {
|
||||
Expr expr;
|
||||
|
||||
TranslatedExplicitFieldInitialization() {
|
||||
@@ -545,8 +524,7 @@ class TranslatedExplicitFieldInitialization extends
|
||||
result = field.getType().getUnspecifiedType()
|
||||
}
|
||||
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag,
|
||||
EdgeKind kind) {
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag, EdgeKind kind) {
|
||||
tag = getFieldAddressTag() and
|
||||
result = getInitialization().getFirstInstruction() and
|
||||
kind instanceof GotoEdge
|
||||
@@ -576,14 +554,12 @@ private string getZeroValue(Type type) {
|
||||
* Represents the IR translation of the initialization of a field without a
|
||||
* corresponding element in the initializer list.
|
||||
*/
|
||||
class TranslatedFieldValueInitialization extends
|
||||
TranslatedFieldInitialization, TTranslatedFieldValueInitialization {
|
||||
class TranslatedFieldValueInitialization extends TranslatedFieldInitialization, TTranslatedFieldValueInitialization {
|
||||
TranslatedFieldValueInitialization() {
|
||||
this = TTranslatedFieldValueInitialization(ast, field)
|
||||
}
|
||||
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag,
|
||||
Type resultType, boolean isGLValue) {
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag, Type resultType, boolean isGLValue) {
|
||||
TranslatedFieldInitialization.super.hasInstruction(opcode, tag, resultType, isGLValue) or
|
||||
(
|
||||
tag = getFieldDefaultValueTag() and
|
||||
@@ -599,8 +575,7 @@ class TranslatedFieldValueInitialization extends
|
||||
)
|
||||
}
|
||||
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag,
|
||||
EdgeKind kind) {
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag, EdgeKind kind) {
|
||||
kind instanceof GotoEdge and
|
||||
(
|
||||
(
|
||||
@@ -623,8 +598,7 @@ class TranslatedFieldValueInitialization extends
|
||||
result = getZeroValue(field.getType().getUnspecifiedType())
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag,
|
||||
OperandTag operandTag) {
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
result = TranslatedFieldInitialization.super.getInstructionOperand(tag, operandTag) or
|
||||
(
|
||||
tag = getFieldDefaultValueStoreTag() and
|
||||
@@ -681,8 +655,7 @@ abstract class TranslatedElementInitialization extends TranslatedElement {
|
||||
result = getInstruction(getElementIndexTag())
|
||||
}
|
||||
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag,
|
||||
Type resultType, boolean isGLValue) {
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag, Type resultType, boolean isGLValue) {
|
||||
(
|
||||
tag = getElementIndexTag() and
|
||||
opcode instanceof Opcode::Constant and
|
||||
@@ -697,15 +670,13 @@ abstract class TranslatedElementInitialization extends TranslatedElement {
|
||||
)
|
||||
}
|
||||
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag,
|
||||
EdgeKind kind) {
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag, EdgeKind kind) {
|
||||
tag = getElementIndexTag() and
|
||||
result = getInstruction(getElementAddressTag()) and
|
||||
kind instanceof GotoEdge
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag,
|
||||
OperandTag operandTag) {
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = getElementAddressTag() and
|
||||
(
|
||||
(
|
||||
@@ -764,8 +735,7 @@ class TranslatedExplicitElementInitialization extends TranslatedElementInitializ
|
||||
result = getElementType()
|
||||
}
|
||||
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag,
|
||||
EdgeKind kind) {
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag, EdgeKind kind) {
|
||||
result = TranslatedElementInitialization.super.getInstructionSuccessor(tag, kind) or
|
||||
(
|
||||
tag = getElementAddressTag() and
|
||||
@@ -806,8 +776,7 @@ class TranslatedElementValueInitialization extends TranslatedElementInitializati
|
||||
elementCount)
|
||||
}
|
||||
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag,
|
||||
Type resultType, boolean isGLValue) {
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag, Type resultType, boolean isGLValue) {
|
||||
TranslatedElementInitialization.super.hasInstruction(opcode, tag, resultType, isGLValue) or
|
||||
(
|
||||
tag = getElementDefaultValueTag() and
|
||||
@@ -823,8 +792,7 @@ class TranslatedElementValueInitialization extends TranslatedElementInitializati
|
||||
)
|
||||
}
|
||||
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag,
|
||||
EdgeKind kind) {
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag, EdgeKind kind) {
|
||||
result = TranslatedElementInitialization.super.getInstructionSuccessor(tag, kind) or
|
||||
(
|
||||
kind instanceof GotoEdge and
|
||||
@@ -862,8 +830,7 @@ class TranslatedElementValueInitialization extends TranslatedElementInitializati
|
||||
result = elementCount * getElementType().getSize()
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag,
|
||||
OperandTag operandTag) {
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
result = TranslatedElementInitialization.super.getInstructionOperand(tag, operandTag) or
|
||||
(
|
||||
tag = getElementDefaultValueStoreTag() and
|
||||
@@ -943,8 +910,7 @@ abstract class TranslatedBaseStructorCall extends TranslatedStructorCallFromStru
|
||||
result = getInstruction(OnlyInstructionTag())
|
||||
}
|
||||
|
||||
override final predicate hasInstruction(Opcode opcode, InstructionTag tag, Type resultType,
|
||||
boolean isGLValue) {
|
||||
override final predicate hasInstruction(Opcode opcode, InstructionTag tag, Type resultType, boolean isGLValue) {
|
||||
tag = OnlyInstructionTag() and
|
||||
opcode instanceof Opcode::ConvertToBase and
|
||||
resultType = call.getTarget().getDeclaringType().getUnspecifiedType() and
|
||||
@@ -961,15 +927,13 @@ abstract class TranslatedBaseStructorCall extends TranslatedStructorCallFromStru
|
||||
result = getInstruction(OnlyInstructionTag())
|
||||
}
|
||||
|
||||
override final Instruction getInstructionOperand(InstructionTag tag,
|
||||
OperandTag operandTag) {
|
||||
override final Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = OnlyInstructionTag() and
|
||||
operandTag instanceof UnaryOperandTag and
|
||||
result = getTranslatedFunction(getFunction()).getInitializeThisInstruction()
|
||||
}
|
||||
|
||||
override final predicate getInstructionInheritance(InstructionTag tag,
|
||||
Class baseClass, Class derivedClass) {
|
||||
override final predicate getInstructionInheritance(InstructionTag tag, Class baseClass, Class derivedClass) {
|
||||
tag = OnlyInstructionTag() and
|
||||
baseClass = call.getTarget().getDeclaringType().getUnspecifiedType() and
|
||||
derivedClass = getFunction().getDeclaringType().getUnspecifiedType()
|
||||
@@ -980,7 +944,7 @@ abstract class TranslatedBaseStructorCall extends TranslatedStructorCallFromStru
|
||||
* Represents a call to a delegating or base class constructor from within a constructor.
|
||||
*/
|
||||
abstract class TranslatedConstructorCallFromConstructor extends TranslatedStructorCallFromStructor,
|
||||
TTranslatedConstructorBaseInit {
|
||||
TTranslatedConstructorBaseInit {
|
||||
TranslatedConstructorCallFromConstructor() {
|
||||
this = TTranslatedConstructorBaseInit(call)
|
||||
}
|
||||
@@ -1004,8 +968,7 @@ class TranslatedConstructorDelegationInit extends TranslatedConstructorCallFromC
|
||||
result = getStructorCall().getFirstInstruction()
|
||||
}
|
||||
|
||||
override final predicate hasInstruction(Opcode opcode, InstructionTag tag, Type resultType,
|
||||
boolean isGLValue) {
|
||||
override final predicate hasInstruction(Opcode opcode, InstructionTag tag, Type resultType, boolean isGLValue) {
|
||||
none()
|
||||
}
|
||||
|
||||
@@ -1022,8 +985,7 @@ class TranslatedConstructorDelegationInit extends TranslatedConstructorCallFromC
|
||||
* Represents the IR translation of a call to a base class constructor from within a
|
||||
* derived class constructor
|
||||
*/
|
||||
class TranslatedConstructorBaseInit extends TranslatedConstructorCallFromConstructor,
|
||||
TranslatedBaseStructorCall {
|
||||
class TranslatedConstructorBaseInit extends TranslatedConstructorCallFromConstructor, TranslatedBaseStructorCall {
|
||||
TranslatedConstructorBaseInit() {
|
||||
not call instanceof ConstructorDelegationInit
|
||||
}
|
||||
@@ -1041,8 +1003,7 @@ TranslatedDestructorBaseDestruction getTranslatedDestructorBaseDestruction(Destr
|
||||
* Represents the IR translation of a call to a base class destructor from within a
|
||||
* derived class destructor.
|
||||
*/
|
||||
class TranslatedDestructorBaseDestruction extends TranslatedBaseStructorCall,
|
||||
TTranslatedDestructorBaseDestruction {
|
||||
class TranslatedDestructorBaseDestruction extends TranslatedBaseStructorCall, TTranslatedDestructorBaseDestruction {
|
||||
TranslatedDestructorBaseDestruction() {
|
||||
this = TTranslatedDestructorBaseDestruction(call)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user