|
|
@ -25,17 +25,27 @@ type Error struct { |
|
|
|
Column int |
|
|
|
Column int |
|
|
|
|
|
|
|
|
|
|
|
Content string |
|
|
|
Content string |
|
|
|
|
|
|
|
Hint string |
|
|
|
Err error |
|
|
|
Err error |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (err Error) Error() string { |
|
|
|
func (err Error) Error() string { |
|
|
|
var s []string |
|
|
|
var s []string |
|
|
|
|
|
|
|
var prefix string |
|
|
|
|
|
|
|
|
|
|
|
switch { |
|
|
|
switch { |
|
|
|
case err.Line > 0 || err.Column > 0: |
|
|
|
case err.Line > 0 || err.Column > 0: |
|
|
|
s = append(s, fmt.Sprintf("%s:%v:%v", err.Filename, err.Line, err.Column)) |
|
|
|
if err.Filename != "" { |
|
|
|
|
|
|
|
prefix = fmt.Sprintf("%s:%v:%v", err.Filename, err.Line, err.Column) |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
prefix = fmt.Sprintf("%v:%v", err.Line, err.Column) |
|
|
|
|
|
|
|
} |
|
|
|
case err.Filename != "": |
|
|
|
case err.Filename != "": |
|
|
|
s = append(s, err.Filename) |
|
|
|
prefix = err.Filename |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if prefix != "" { |
|
|
|
|
|
|
|
s = append(s, prefix) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if err.Err != nil { |
|
|
|
if err.Err != nil { |
|
|
@ -46,6 +56,10 @@ func (err Error) Error() string { |
|
|
|
s = append(s, fmt.Sprintf("%q", err.Content)) |
|
|
|
s = append(s, fmt.Sprintf("%q", err.Content)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if err.Hint != "" { |
|
|
|
|
|
|
|
s = append(s, err.Hint) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return strings.Join(s, ": ") |
|
|
|
return strings.Join(s, ": ") |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|