mirror of
https://github.com/Binject/debug
synced 2026-06-08 10:28:33 +00:00
added 2 more test cases
This commit is contained in:
@@ -694,6 +694,7 @@ func (r *objReader) parseObject(prefix []byte, returnReader bool) (*goobj2.Reade
|
||||
}
|
||||
|
||||
// Resolve missing inlined function names
|
||||
// TODO: will this work when inline functions are from user/third party imports?
|
||||
objReaders := make([]*goobj2.Reader, len(r.p.Packages)-1)
|
||||
for _, inl := range inlFuncsToResolve {
|
||||
if pkgIdx := inl.Func.PkgIdx; objReaders[pkgIdx-1] == nil {
|
||||
|
||||
Vendored
+33
@@ -0,0 +1,33 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"go/format"
|
||||
"go/parser"
|
||||
"go/token"
|
||||
"log"
|
||||
)
|
||||
|
||||
func main() {
|
||||
const expr = "(6+2*3)/4"
|
||||
|
||||
// parser.ParseExpr parses the argument and returns the
|
||||
// corresponding ast.Node.
|
||||
node, err := parser.ParseExpr(expr)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
// Create a FileSet for node. Since the node does not come
|
||||
// from a real source file, fset will be empty.
|
||||
fset := token.NewFileSet()
|
||||
|
||||
var buf bytes.Buffer
|
||||
err = format.Node(&buf, fset, node)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
fmt.Println(buf.String())
|
||||
}
|
||||
Vendored
+43
@@ -0,0 +1,43 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
func main() {
|
||||
typ := reflect.StructOf([]reflect.StructField{
|
||||
{
|
||||
Name: "Height",
|
||||
Type: reflect.TypeOf(float64(0)),
|
||||
Tag: `json:"height"`,
|
||||
},
|
||||
{
|
||||
Name: "Age",
|
||||
Type: reflect.TypeOf(int(0)),
|
||||
Tag: `json:"age"`,
|
||||
},
|
||||
})
|
||||
|
||||
v := reflect.New(typ).Elem()
|
||||
v.Field(0).SetFloat(0.4)
|
||||
v.Field(1).SetInt(2)
|
||||
s := v.Addr().Interface()
|
||||
|
||||
w := new(bytes.Buffer)
|
||||
if err := json.NewEncoder(w).Encode(s); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fmt.Printf("value: %+v\n", s)
|
||||
fmt.Printf("json: %s", w.Bytes())
|
||||
|
||||
r := bytes.NewReader([]byte(`{"height":1.5,"age":10}`))
|
||||
if err := json.NewDecoder(r).Decode(s); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Printf("value: %+v\n", s)
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user