Skip to content

x/tools/gopls: refactor.extract.variable on multi-valued expression produces invalid code #70561

Closed
@adonovan

Description

@adonovan

Gopls' extract logic does not correctly handle the case when an expression has multiple values:

Before:

func f(m map[string]int) {
	if v, ok := m[""]; ok { // <-- refactor.extract.variable on m[""]
		println(v)
	}
}

After:

func f(m map[string]int) {
	x := m[""]
	if v, ok := x; ok { // error: assignment mismatch
		println(v)
	}
}

Metadata

Metadata

Assignees

Labels

RefactoringIssues related to refactoring toolsgoplsIssues related to the Go language server, gopls.help wanted

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions