code: func (f *file) isUntypedConst(expr ast.Expr) (defType string, ok bool) {
  	// Re-evaluate expr outside of its context to see if it's untyped.
  	// (An expr evaluated within, for example, an assignment context will get the type of the LHS.)
  	exprStr := f.render(expr)
  	tv, err := types.Eval(f.fset, f.pkg.typesPkg, expr.Pos(), exprStr)
  	if err != nil {
  		return "", false
  	}
  	if b, ok := tv.Type.(*types.Basic); ok {
  		if dt, ok := basicTypeKinds[b.Kind()]; ok {
  			return dt, true
  		}
  	}
  
  	return "", false
  }
docs: // isUntypedConst reports whether expr is an untyped constant,
  // and indicates what its default type is.
  // scope may be nil.