1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#include <config_clang.h>
#include <rtl/ustring.hxx>
#include <rtl/string.hxx>
#include <vector>
class Class1
{
OUString const
m_field1; // expected-error {{const field can be static [loplugin:staticconstfield]}}
Class1()
: m_field1("xxxx")
// expected-note@-1 {{init here [loplugin:staticconstfield]}}
{
(void)m_field1;
}
};
class Class2
{
OString const
m_field2; // expected-error {{const field can be static [loplugin:staticconstfield]}}
Class2()
: m_field2("yyyy")
// expected-note@-1 {{init here [loplugin:staticconstfield]}}
{
(void)m_field2;
}
};
// no warning expected
class Class4
{
OUString m_field3;
Class4()
: m_field3("zzzz")
{
(void)m_field3;
}
};
class Class5
{
enum class Enum
{
ONE
};
float const
m_fielda1; // expected-error {{const field can be static [loplugin:staticconstfield]}}
int const m_fielda2; // expected-error {{const field can be static [loplugin:staticconstfield]}}
bool const
m_fielda3; // expected-error {{const field can be static [loplugin:staticconstfield]}}
Enum const
m_fielda4; // expected-error {{const field can be static [loplugin:staticconstfield]}}
Class5()
: m_fielda1(1.0)
// expected-note@-1 {{init here [loplugin:staticconstfield]}}
, m_fielda2(1)
// expected-note@-1 {{init here [loplugin:staticconstfield]}}
, m_fielda3(true)
// expected-note@-1 {{init here [loplugin:staticconstfield]}}
, m_fielda4(Enum::ONE)
// expected-note@-1 {{init here [loplugin:staticconstfield]}}
{
(void)m_fielda1;
(void)m_fielda2;
(void)m_fielda3;
(void)m_fielda4;
}
};
// no warning expected
class Class6
{
enum class Enum
{
ONE
};
float m_fieldb1;
int m_fieldb2;
bool m_fieldb3;
Enum m_fieldb4;
Class6()
: m_fieldb1(1.0)
, m_fieldb2(1)
, m_fieldb3(true)
, m_fieldb4(Enum::ONE)
{
(void)m_fieldb1;
(void)m_fieldb2;
(void)m_fieldb3;
(void)m_fieldb4;
}
};
// no warning expected, checking for assigning to const field from multiple constructors
class Class7
{
bool const m_field7;
Class7()
: m_field7(true)
{
(void)m_field7;
}
Class7(bool b)<--- Class 'Class7' has a constructor with 1 argument that is not explicit. [+]Class 'Class7' has a constructor with 1 argument that is not explicit. Such constructors should in general be explicit for type safety reasons. Using the explicit keyword in the constructor means some mistakes when using the class can be avoided.
: m_field7(b)
{
(void)m_field7;
}
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
|