diff --git a/configs/configupgrade/test-fixtures/valid/number-literals/input/number-literals.tf b/configs/configupgrade/test-fixtures/valid/number-literals/input/number-literals.tf new file mode 100644 index 0000000000..efae79c65a --- /dev/null +++ b/configs/configupgrade/test-fixtures/valid/number-literals/input/number-literals.tf @@ -0,0 +1,7 @@ +locals { + decimal_int = 1 + decimal_float = 1.5 + decimal_float_tricky = 0.1 + hex_int = 0xff + octal_int = 0777 +} diff --git a/configs/configupgrade/test-fixtures/valid/number-literals/want/number-literals.tf b/configs/configupgrade/test-fixtures/valid/number-literals/want/number-literals.tf new file mode 100644 index 0000000000..19e7376aba --- /dev/null +++ b/configs/configupgrade/test-fixtures/valid/number-literals/want/number-literals.tf @@ -0,0 +1,7 @@ +locals { + decimal_int = 1 + decimal_float = 1.5 + decimal_float_tricky = 0.1 + hex_int = 255 + octal_int = 511 +} diff --git a/configs/configupgrade/test-fixtures/valid/number-literals/want/versions.tf b/configs/configupgrade/test-fixtures/valid/number-literals/want/versions.tf new file mode 100644 index 0000000000..d9b6f790b9 --- /dev/null +++ b/configs/configupgrade/test-fixtures/valid/number-literals/want/versions.tf @@ -0,0 +1,3 @@ +terraform { + required_version = ">= 0.12" +} diff --git a/configs/configupgrade/upgrade_expr.go b/configs/configupgrade/upgrade_expr.go index d568e8db61..2f525a3b1d 100644 --- a/configs/configupgrade/upgrade_expr.go +++ b/configs/configupgrade/upgrade_expr.go @@ -143,8 +143,17 @@ Value: buf.WriteString("false") } + case hcl1token.NUMBER: + num := tv.Value() + buf.WriteString(strconv.FormatInt(num.(int64), 10)) + + case hcl1token.FLOAT: + num := tv.Value() + buf.WriteString(strconv.FormatFloat(num.(float64), 'f', -1, 64)) + default: - // For everything else (NUMBER, FLOAT) we'll just pass through the given bytes verbatim. + // For everything else we'll just pass through the given bytes verbatim, + // but we should't get here because the above is intended to be exhaustive. buf.WriteString(tv.Text) }