Skip to content

Commit

Permalink
🐛 Be more helpful with floats when allowDangerousTypes=false
Browse files Browse the repository at this point in the history
Currently, we fall through and just emit an error telling that floats
are not supported which lead to ppl creating prs to add support. We
actually do support them although that is discouraged. This change makes
us emit a more helpful error.
  • Loading branch information
alvaroaleman committed Sep 18, 2021
1 parent 14c7780 commit 7e7f2e9
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions pkg/crd/schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ limitations under the License.
package crd

import (
"errors"
"fmt"
"go/ast"
"go/token"
Expand Down Expand Up @@ -427,10 +428,13 @@ func builtinToType(basic *types.Basic, allowDangerousTypes bool) (typ string, fo
typ = "string"
case basicInfo&types.IsInteger != 0:
typ = "integer"
case basicInfo&types.IsFloat != 0 && allowDangerousTypes:
typ = "number"
case basicInfo&types.IsFloat != 0:
if allowDangerousTypes {
typ = "number"
} else {
return "", "", errors.New("found float, the usage of which is highly discouraged, as support for them varies across languages. Please consider serializing your float as string instead. If you are really sure you want to use them, re-run with crd:allowDangerousTypes=true")
}
default:
// NB(directxman12): floats are *NOT* allowed in kubernetes APIs
return "", "", fmt.Errorf("unsupported type %q", basic.String())
}

Expand Down

0 comments on commit 7e7f2e9

Please sign in to comment.