Re: how to instrument dmd compiler to dump all references to a given symbol?

2018-01-13 Thread Seb via Digitalmars-d

On Sunday, 14 January 2018 at 02:36:02 UTC, Timothee Cour wrote:

eg:

how to instrument dmd compiler to dump all references to a 
given symbol?

eg: for `A.a` it should output the locations marked with HERE
any help/starting points would be appreciated!

```
Struct A{
int a;
 void fun(){
  a++; // HERE
  alias b=a;
 b++; // HERE
 }
}

void fun(){
 int a; // NOT HERE
 A b;
 b.a ++ ; // HERE
}
```


I don't know what you are trying to achieve, but `deprecated` 
could work for you. At least it's an easy way to get all 
locations using a symbol:


https://run.dlang.io/is/ICv9lH


Re: how to instrument dmd compiler to dump all references to a given symbol?

2018-01-13 Thread Shachar Shemesh via Digitalmars-d

On 14/01/18 04:42, Adam D. Ruppe wrote:

On Sunday, 14 January 2018 at 02:36:02 UTC, Timothee Cour wrote:

how to instrument dmd compiler to dump all references to a given symbol?


you can actually do it with your own code. behold:

struct A{
//int a; // comment this line
int _a; // make the actual var renamed...


It wouldn't catch this use:

auto hiddenUser(T)(T t) {
  static if( __traits(hasMember, T, "a") ) {
return T.a;
  } else {
return 17;
  }
}

...
  A var;
  hiddenUser(var);


Re: how to instrument dmd compiler to dump all references to a given symbol?

2018-01-13 Thread Adam D. Ruppe via Digitalmars-d

On Sunday, 14 January 2018 at 02:36:02 UTC, Timothee Cour wrote:
how to instrument dmd compiler to dump all references to a 
given symbol?


you can actually do it with your own code. behold:

struct A{
//int a; // comment this line
int _a; // make the actual var renamed...

// then add a ref property with template file/line params
@property ref int a(string file = __FILE__, size_t line = 
__LINE__)() {

pragma(msg, file); // and print those out
pragma(msg, line);
return _a;
}
 void fun(){
  a++; // HERE
  alias b=a;
 b++; // HERE
 }
}

void fun(){
 int a; // NOT HERE
 A b;
 b.a ++ ; // HERE
}



Can be a bit trickier in other cases but there's a compile time 
list of uses.


how to instrument dmd compiler to dump all references to a given symbol?

2018-01-13 Thread Timothee Cour via Digitalmars-d
eg:

how to instrument dmd compiler to dump all references to a given symbol?
eg: for `A.a` it should output the locations marked with HERE
any help/starting points would be appreciated!

```
Struct A{
int a;
 void fun(){
  a++; // HERE
  alias b=a;
 b++; // HERE
 }
}

void fun(){
 int a; // NOT HERE
 A b;
 b.a ++ ; // HERE
}
```