github.com/golang/mock@v1.6.0/mockgen/internal/tests/generated_identifier_conflict/README.md (about)

     1  # Generated Identifier Conflict
     2  
     3  The generated mock methods use some hardcoded variable/receiver names that can
     4  have conflicts with the argument names that are defined by the code for which
     5  the mock is generated when using the source generation method.
     6  
     7  Example:
     8  
     9  ```go
    10  type Example interface {
    11      Method(_m, _mr, m, mr int)
    12  }
    13  ```
    14  
    15  ```go
    16  // Method mocks base method
    17  func (_m *MockExample) Method(_m int, _mr int, m int, mr int) {
    18      _m.ctrl.Call(_m, "Method", _m, _mr, m, mr)
    19  }
    20  ```
    21  
    22  In the above example one of the interface method parameters is called `_m`
    23  but unfortunately the generated receiver name is also called `_m` so the
    24  mock code won't compile.
    25  
    26  The generator has to make sure that generated identifiers (e.g.: the receiver
    27  names) are always different from the arg names that might come from external
    28  sources.