func toJavaScriptType(t *types.Basic) string { switch t.Kind() { case types.UntypedInt: return "Int" case types.Byte: return "Uint8" case types.Rune: return "Int32" case types.UnsafePointer: return "UnsafePointer" default: name := t.String() return strings.ToUpper(name[:1]) + name[1:] } }
func (c *funcContext) fixNumber(value *expression, basic *types.Basic) *expression { switch basic.Kind() { case types.Int8: return c.formatParenExpr("%s << 24 >> 24", value) case types.Uint8: return c.formatParenExpr("%s << 24 >>> 24", value) case types.Int16: return c.formatParenExpr("%s << 16 >> 16", value) case types.Uint16: return c.formatParenExpr("%s << 16 >>> 16", value) case types.Int32, types.Int, types.UntypedInt: return c.formatParenExpr("%s >> 0", value) case types.Uint32, types.Uint, types.Uintptr: return c.formatParenExpr("%s >>> 0", value) case types.Float32: return c.formatExpr("$fround(%s)", value) case types.Float64: return value default: panic(fmt.Sprintf("fixNumber: unhandled basic.Kind(): %s", basic.String())) } }