diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-07-07 20:07:30 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-07-08 22:52:24 +0200 |
| commit | 306ca0571c5d906ce76df97bd1ea54f4e0e50240 (patch) | |
| tree | a579718e096c53dc5386f4af2fbabb3318eaf1ed /pkg/compiler/check.go | |
| parent | 93213ec0d3c4522c8844a51b718eb56ce62f395b (diff) | |
prog, pkg/compiler: support fmt type
fmt type allows to convert intergers and resources
to string representation.
Diffstat (limited to 'pkg/compiler/check.go')
| -rw-r--r-- | pkg/compiler/check.go | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/pkg/compiler/check.go b/pkg/compiler/check.go index 19e196adb..a07bcd479 100644 --- a/pkg/compiler/check.go +++ b/pkg/compiler/check.go @@ -309,7 +309,7 @@ func (comp *compiler) checkLenType(t *ast.Type, name string, fields []*ast.Field if argDesc.Type == typeArgLenTarget { comp.checkLenTarget(t, name, arg.Ident, fields, parents) } else if argDesc.Type == typeArgType { - comp.checkLenType(arg, name, fields, parents, checked, false) + comp.checkLenType(arg, name, fields, parents, checked, argDesc.IsArg) } } } @@ -417,7 +417,7 @@ func (comp *compiler) collectUsedType(structs, flags, strflags map[string]bool, _, args, _ := comp.getArgsBase(t, "", prog.DirIn, isArg) for i, arg := range args { if desc.Args[i].Type == typeArgType { - comp.collectUsedType(structs, flags, strflags, arg, false) + comp.collectUsedType(structs, flags, strflags, arg, desc.Args[i].IsArg) } } } @@ -524,7 +524,7 @@ func (comp *compiler) checkTypeCtors(t *ast.Type, dir prog.Dir, isArg bool, _, args, _ := comp.getArgsBase(t, "", dir, isArg) for i, arg := range args { if desc.Args[i].Type == typeArgType { - comp.checkTypeCtors(arg, dir, false, ctors, checked) + comp.checkTypeCtors(arg, dir, desc.Args[i].IsArg, ctors, checked) } } } @@ -722,7 +722,11 @@ func (comp *compiler) checkType(ctx checkCtx, t *ast.Type, flags checkFlags) { err0 := comp.errors for i, arg := range args { if desc.Args[i].Type == typeArgType { - comp.checkType(ctx, arg, 0) + var innerFlags checkFlags + if desc.Args[i].IsArg { + innerFlags |= checkIsArg + } + comp.checkType(ctx, arg, innerFlags) } else { comp.checkTypeArg(t, arg, desc.Args[i]) } |
