Merge pull request #1049 from golangci/unused-fix-mode
Fix unused in "fix" mode
This commit is contained in:
		
						commit
						c0618b0593
					
				| @ -33,7 +33,7 @@ func NewUnused() *goanalysis.Linter { | |||||||
| 		for _, ur := range u.Result() { | 		for _, ur := range u.Result() { | ||||||
| 			p := u.ProblemObject(lintCtx.Packages[0].Fset, ur) | 			p := u.ProblemObject(lintCtx.Packages[0].Fset, ur) | ||||||
| 			pkg := typesToPkg[ur.Pkg()] | 			pkg := typesToPkg[ur.Pkg()] | ||||||
| 			issues = append(issues, goanalysis.NewIssue(&result.Issue{ //nolint:scopelint | 			i := &result.Issue{ | ||||||
| 				FromLinter: name, | 				FromLinter: name, | ||||||
| 				Text:       p.Message, | 				Text:       p.Message, | ||||||
| 				Pos:        p.Pos, | 				Pos:        p.Pos, | ||||||
| @ -42,11 +42,16 @@ func NewUnused() *goanalysis.Linter { | |||||||
| 					From: p.Pos.Line, | 					From: p.Pos.Line, | ||||||
| 					To:   p.End.Line, | 					To:   p.End.Line, | ||||||
| 				}, | 				}, | ||||||
| 				Replacement: &result.Replacement{ | 			} | ||||||
|  | 			// See https://github.com/golangci/golangci-lint/issues/1048 | ||||||
|  | 			// If range is invalid, this will break `--fix` mode. | ||||||
|  | 			if i.LineRange.To >= i.LineRange.From { | ||||||
|  | 				i.Replacement = &result.Replacement{ | ||||||
| 					// Suggest deleting unused stuff. | 					// Suggest deleting unused stuff. | ||||||
| 					NeedOnlyDelete: true, | 					NeedOnlyDelete: true, | ||||||
| 				}, | 				} | ||||||
| 			}, nil)) | 			} | ||||||
|  | 			issues = append(issues, goanalysis.NewIssue(i, nil)) | ||||||
| 		} | 		} | ||||||
| 		return issues | 		return issues | ||||||
| 	}).WithContextSetter(func(lintCtx *linter.Context) { | 	}).WithContextSetter(func(lintCtx *linter.Context) { | ||||||
|  | |||||||
| @ -223,6 +223,12 @@ func (f Fixer) writeFixedFile(origFileLines [][]byte, issues []result.Issue, tmp | |||||||
| 		} else { | 		} else { | ||||||
| 			nextIssueIndex++ | 			nextIssueIndex++ | ||||||
| 			rng := nextIssue.GetLineRange() | 			rng := nextIssue.GetLineRange() | ||||||
|  | 			if rng.From > rng.To { | ||||||
|  | 				// Maybe better decision is to skip such issues, re-evaluate if regressed. | ||||||
|  | 				f.log.Warnf("[fixer]: issue line range is probably invalid, fix can be incorrect (from=%d, to=%d, linter=%s)", | ||||||
|  | 					rng.From, rng.To, nextIssue.FromLinter, | ||||||
|  | 				) | ||||||
|  | 			} | ||||||
| 			i += rng.To - rng.From | 			i += rng.To - rng.From | ||||||
| 			if nextIssue.Replacement.NeedOnlyDelete { | 			if nextIssue.Replacement.NeedOnlyDelete { | ||||||
| 				continue | 				continue | ||||||
|  | |||||||
							
								
								
									
										8
									
								
								test/testdata/fix/in/unused.go
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								test/testdata/fix/in/unused.go
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | //args: -Eunused | ||||||
|  | package p | ||||||
|  | 
 | ||||||
|  | type ( | ||||||
|  | 	unused struct{} | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | func X() {} | ||||||
							
								
								
									
										8
									
								
								test/testdata/fix/out/unused.go
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								test/testdata/fix/out/unused.go
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | //args: -Eunused | ||||||
|  | package p | ||||||
|  | 
 | ||||||
|  | type ( | ||||||
|  | 	unused struct{} | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | func X() {} | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Aleksandr Razumov
						Aleksandr Razumov