Skip to content

Commit f350c03

Browse files
committed
Fix using final for bitfield accessors in classes
Accessors for private bitfields were already implicitly final.
1 parent 1b09e23 commit f350c03

File tree

6 files changed

+66
-26
lines changed

6 files changed

+66
-26
lines changed

src/cppconv/dwriter.d

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6393,7 +6393,7 @@ void declarationToDCode(ref CodeWriter code, DWriterData data, Declaration d, im
63936393
if (d.name.length)
63946394
{
63956395
if (data.currentClassDeclaration !is null
6396-
&& !isClass(data.currentClassDeclaration.tree, data))
6396+
&& isClass(data.currentClassDeclaration.tree, data))
63976397
code.write("final ");
63986398
code.writeln(typeCode, " ", replaceKeywords(d.name), "() const");
63996399
code.writeln("{").incIndent;
@@ -6402,7 +6402,7 @@ void declarationToDCode(ref CodeWriter code, DWriterData data, Declaration d, im
64026402
toChars!16((ulong(1) << e.data.length) - 1), ";");
64036403
code.decIndent.writeln("}");
64046404
if (data.currentClassDeclaration !is null
6405-
&& !isClass(data.currentClassDeclaration.tree, data))
6405+
&& isClass(data.currentClassDeclaration.tree, data))
64066406
code.write("final ");
64076407
code.writeln(typeCode, " ", replaceKeywords(d.name), "(", typeCode, " value)");
64086408
code.writeln("{").incIndent;

tests/single/test120.d

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,38 +9,38 @@ struct git_revwalk {
99
did_hide: 1,
1010
did_push: 1; +/
1111
ubyte bitfieldData_walking;
12-
final uint walking() const
12+
uint walking() const
1313
{
1414
return (bitfieldData_walking >> 0) & 0x1;
1515
}
16-
final uint walking(uint value)
16+
uint walking(uint value)
1717
{
1818
bitfieldData_walking = (bitfieldData_walking & ~0x1) | ((value & 0x1) << 0);
1919
return value;
2020
}
21-
final uint first_parent() const
21+
uint first_parent() const
2222
{
2323
return (bitfieldData_walking >> 1) & 0x1;
2424
}
25-
final uint first_parent(uint value)
25+
uint first_parent(uint value)
2626
{
2727
bitfieldData_walking = (bitfieldData_walking & ~0x2) | ((value & 0x1) << 1);
2828
return value;
2929
}
30-
final uint did_hide() const
30+
uint did_hide() const
3131
{
3232
return (bitfieldData_walking >> 2) & 0x1;
3333
}
34-
final uint did_hide(uint value)
34+
uint did_hide(uint value)
3535
{
3636
bitfieldData_walking = (bitfieldData_walking & ~0x4) | ((value & 0x1) << 2);
3737
return value;
3838
}
39-
final uint did_push() const
39+
uint did_push() const
4040
{
4141
return (bitfieldData_walking >> 3) & 0x1;
4242
}
43-
final uint did_push(uint value)
43+
uint did_push(uint value)
4444
{
4545
bitfieldData_walking = (bitfieldData_walking & ~0x8) | ((value & 0x1) << 3);
4646
return value;

tests/single/test218.d

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,21 @@ struct QArrayData
99
int size;
1010
/+ unsigned int alloc : 31; +/
1111
uint bitfieldData_alloc;
12-
final uint alloc() const
12+
uint alloc() const
1313
{
1414
return (bitfieldData_alloc >> 0) & 0x7fffffff;
1515
}
16-
final uint alloc(uint value)
16+
uint alloc(uint value)
1717
{
1818
bitfieldData_alloc = (bitfieldData_alloc & ~0x7fffffff) | ((value & 0x7fffffff) << 0);
1919
return value;
2020
}
2121
/+ unsigned int capacityReserved : 1; +/
22-
final uint capacityReserved() const
22+
uint capacityReserved() const
2323
{
2424
return (bitfieldData_alloc >> 31) & 0x1;
2525
}
26-
final uint capacityReserved(uint value)
26+
uint capacityReserved(uint value)
2727
{
2828
bitfieldData_alloc = (bitfieldData_alloc & ~0x80000000) | ((value & 0x1) << 31);
2929
return value;

tests/single/test374.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class C
2+
{
3+
virtual ~C();
4+
5+
int i1 : 2;
6+
int i2 : 6;
7+
};

tests/single/test374.d

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
module test374;
2+
3+
import config;
4+
import cppconvhelpers;
5+
6+
class C
7+
{
8+
private:
9+
/+ virtual +/~this();
10+
11+
/+ int i1 : 2; +/
12+
ubyte bitfieldData_i1;
13+
final int i1() const
14+
{
15+
return (bitfieldData_i1 >> 0) & 0x3;
16+
}
17+
final int i1(int value)
18+
{
19+
bitfieldData_i1 = (bitfieldData_i1 & ~0x3) | ((value & 0x3) << 0);
20+
return value;
21+
}
22+
/+ int i2 : 6; +/
23+
final int i2() const
24+
{
25+
return (bitfieldData_i1 >> 2) & 0x3f;
26+
}
27+
final int i2(int value)
28+
{
29+
bitfieldData_i1 = (bitfieldData_i1 & ~0xfc) | ((value & 0x3f) << 2);
30+
return value;
31+
}
32+
}
33+

tests/single/test86.d

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ struct S
1313
static if (defined!"DEF")
1414
{
1515
ubyte bitfieldData_test2;
16-
final uint test2() const
16+
uint test2() const
1717
{
1818
return (bitfieldData_test2 >> 0) & 0x1;
1919
}
20-
final uint test2(uint value)
20+
uint test2(uint value)
2121
{
2222
bitfieldData_test2 = (bitfieldData_test2 & ~0x1) | ((value & 0x1) << 0);
2323
return value;
@@ -26,11 +26,11 @@ struct S
2626
static if (!defined!"DEF")
2727
{
2828
ubyte bitfieldData_test2;
29-
final uint test2() const
29+
uint test2() const
3030
{
3131
return (bitfieldData_test2 >> 0) & 0x1;
3232
}
33-
final uint test2(uint value)
33+
uint test2(uint value)
3434
{
3535
bitfieldData_test2 = (bitfieldData_test2 & ~0x1) | ((value & 0x1) << 0);
3636
return value;
@@ -39,23 +39,23 @@ struct S
3939
/+ unsigned test3: 2; +/
4040
static if (defined!"DEF")
4141
{
42-
final uint test3() const
42+
uint test3() const
4343
{
4444
return (bitfieldData_test2 >> 1) & 0x3;
4545
}
46-
final uint test3(uint value)
46+
uint test3(uint value)
4747
{
4848
bitfieldData_test2 = (bitfieldData_test2 & ~0x6) | ((value & 0x3) << 1);
4949
return value;
5050
}
5151
}
5252
static if (!defined!"DEF")
5353
{
54-
final uint test3() const
54+
uint test3() const
5555
{
5656
return (bitfieldData_test2 >> 1) & 0x3;
5757
}
58-
final uint test3(uint value)
58+
uint test3(uint value)
5959
{
6060
bitfieldData_test2 = (bitfieldData_test2 & ~0x6) | ((value & 0x3) << 1);
6161
return value;
@@ -68,11 +68,11 @@ struct S
6868
/+ unsigned test5: 1; +/
6969
static if (defined!"DEF")
7070
{
71-
final uint test5() const
71+
uint test5() const
7272
{
7373
return (bitfieldData_test2 >> 3) & 0x1;
7474
}
75-
final uint test5(uint value)
75+
uint test5(uint value)
7676
{
7777
bitfieldData_test2 = (bitfieldData_test2 & ~0x8) | ((value & 0x1) << 3);
7878
return value;
@@ -81,11 +81,11 @@ struct S
8181
static if (!defined!"DEF")
8282
{
8383
ubyte bitfieldData_test5;
84-
final uint test5() const
84+
uint test5() const
8585
{
8686
return (bitfieldData_test5 >> 0) & 0x1;
8787
}
88-
final uint test5(uint value)
88+
uint test5(uint value)
8989
{
9090
bitfieldData_test5 = (bitfieldData_test5 & ~0x1) | ((value & 0x1) << 0);
9191
return value;

0 commit comments

Comments
 (0)