aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/compiler/check.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-07-07 20:07:30 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-07-08 22:52:24 +0200
commit306ca0571c5d906ce76df97bd1ea54f4e0e50240 (patch)
treea579718e096c53dc5386f4af2fbabb3318eaf1ed /pkg/compiler/check.go
parent93213ec0d3c4522c8844a51b718eb56ce62f395b (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.go12
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])
}