code: func computeErrorLocation() (file string, line int) {
  	skipFunc := func(file string) bool {
  		if strings.HasSuffix(file, "_test.go") { // Be nice with tests
  			return false
  		}
  		file = filepath.ToSlash(file)
  		for pkg := range dslPackages {
  			if strings.Contains(file, pkg) {
  				return true
  			}
  		}
  		return false
  	}
  	depth := 2
  	_, file, line, _ = runtime.Caller(depth)
  	for skipFunc(file) {
  		depth++
  		_, file, line, _ = runtime.Caller(depth)
  	}
  	wd, err := os.Getwd()
  	if err != nil {
  		return
  	}
  	wd, err = filepath.Abs(wd)
  	if err != nil {
  		return
  	}
  	f, err := filepath.Rel(wd, file)
  	if err != nil {
  		return
  	}
  	file = f
  	return
  }
docs: // computeErrorLocation implements a heuristic to find the location in the user
  // code where the error occurred. It walks back the callstack until the file
  // doesn't match "/goa/design/*.go" or one of the DSL package paths.
  // When successful it returns the file name and line number, empty string and
  // 0 otherwise.