Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue with Constant Declaration Merging in Go Script #1

Open
guiyomh opened this issue Feb 1, 2024 · 1 comment
Open

Issue with Constant Declaration Merging in Go Script #1

guiyomh opened this issue Feb 1, 2024 · 1 comment

Comments

@guiyomh
Copy link

guiyomh commented Feb 1, 2024

Issue Description

I have encountered an issue while using the Go script for merging source files, particularly with the merging of constant declarations. The script combines constants into a single declaration, leading to initialization errors in the merged file.

Reproduction Steps

  1. Define a custom type and constants as follows in separate files:
// File: types.go
tpackage main

type Category int

// File: constants.go
const (
	Ok Category = iota
	Lost
	Rescue
	Endangered
)

type Strategy int

const (
	NormalMode Strategy = iota
	RescueHuman
	RescueEndangered
)
  1. Run the script to merge the source files.

Observed Behavior

The merged file shows errors in the constant declaration section, with some constants missing their initializations.

// File: _merged.go
package main

const (
	Endangered
	NormalMode	Strategy	= iota
	RescueHuman
	RescueEndangered
	Ok	Category	= iota
	Lost
	Rescue
)

type (
	Category	int
	Strategy	int
)

The issue seems to be related to the script combining constant declarations without maintaining their original structure and initializations. This can lead to incorrect behavior when using the merged file.

@mrsombre
Copy link
Owner

mrsombre commented Feb 1, 2024

@guiyomh thanks for sharing. I have noticed this issue with iota constants for a while, btw I am not using this and use values in constants instead.
I'll take a look if I can manage to keep constants groups with iota notation and if that didn't break everything, I think I could fix it. Currently haven't much time, could be great, if you can propose pr.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants