mirror of
https://github.com/github/codeql.git
synced 2025-12-17 17:23:36 +01:00
70 lines
1.3 KiB
C++
70 lines
1.3 KiB
C++
|
|
int source();
|
|
void sink(...);
|
|
|
|
class MyCopyableClassDeclOnly {
|
|
public:
|
|
MyCopyableClassDeclOnly(); // Constructor
|
|
MyCopyableClassDeclOnly(int _v); // ConversionConstructor
|
|
MyCopyableClassDeclOnly(const MyCopyableClassDeclOnly &other); // CopyConstructor
|
|
MyCopyableClassDeclOnly &operator=(const MyCopyableClassDeclOnly &other); // CopyAssignmentOperator
|
|
|
|
|
|
|
|
|
|
int v;
|
|
};
|
|
|
|
void test_copyableclass_declonly()
|
|
{
|
|
{
|
|
MyCopyableClassDeclOnly s1(1);
|
|
MyCopyableClassDeclOnly s2 = 1;
|
|
MyCopyableClassDeclOnly s3(s1);
|
|
MyCopyableClassDeclOnly s4;
|
|
s4 = 1;
|
|
|
|
sink(s1);
|
|
sink(s2);
|
|
sink(s3);
|
|
sink(s4);
|
|
}
|
|
|
|
{
|
|
MyCopyableClassDeclOnly s1(source());
|
|
MyCopyableClassDeclOnly s2 = source();
|
|
MyCopyableClassDeclOnly s3(s1);
|
|
MyCopyableClassDeclOnly s4;
|
|
s4 = source();
|
|
|
|
sink(s1); // $ ast,ir
|
|
sink(s2); // $ ast,ir
|
|
sink(s3); // $ ast,ir
|
|
sink(s4); // $ ast,ir
|
|
}
|
|
|
|
{
|
|
MyCopyableClassDeclOnly s1;
|
|
MyCopyableClassDeclOnly s2 = s1;
|
|
MyCopyableClassDeclOnly s3(s1);
|
|
MyCopyableClassDeclOnly s4;
|
|
s4 = s1;
|
|
|
|
sink(s1);
|
|
sink(s2);
|
|
sink(s3);
|
|
sink(s4);
|
|
}
|
|
|
|
{
|
|
MyCopyableClassDeclOnly s1 = MyCopyableClassDeclOnly(source());
|
|
MyCopyableClassDeclOnly s2;
|
|
MyCopyableClassDeclOnly s3;
|
|
s2 = MyCopyableClassDeclOnly(source());
|
|
|
|
sink(s1); // $ ast,ir
|
|
sink(s2); // $ ast,ir
|
|
sink(s3 = source()); // $ ast MISSING: ir
|
|
}
|
|
}
|