```
$ cat c.cc
struct foo {
  int i;
  void f() const;
};
void foo::f() cont {
  i = 3;
}
$ clang c.cc
c.cc:6:5: error: read-only variable is not assignable
  i = 3;
  ~ ^
c.cc:5:11: note: method 'f' is declared const here
void foo::f() const {
~~~~~~~~~~^~~~~~~~~
1 error generated.

```
Note will point to function definition.



```
$ cat d.cc
typedef const int X;
void test(X x) {
  x = 5;
}
$ clang d.cc
d.cc:3:5: error: read-only variable is not assignable
  x = 5;
  ~ ^
d.cc:2:13: note: variable 'x' is declared here with type 'X' (aka 'const int') 
which is const
void test(X x) {
          ~~^
1 error generated.

```
No problems with typedefs.

I think the note should explicitly point out the const qualifier, otherwise the 
user will see "note: variable 'x' has type 'y'" which isn't very helpful.  
Perhaps "note: variable "x" is declared here with type 'const int'; const 
qualifier prevents assignment" would be better?

http://reviews.llvm.org/D4479



_______________________________________________
cfe-commits mailing list
cfe-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to