aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/compiler
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-01-12 18:36:11 +0100
committerDmitry Vyukov <dvyukov@google.com>2018-01-13 12:52:09 +0100
commit9ea6693e1b62ec7829bf82e383fbe8b8bd7f50ae (patch)
treea7d0703a9a7a7ba8ec5b269e69678a5a2792a831 /pkg/compiler
parenta94baff95ecc03cf34ff2fbf5d514bb924f54855 (diff)
pkg/compiler: allow string/array as template type
Diffstat (limited to 'pkg/compiler')
-rw-r--r--pkg/compiler/types.go16
1 files changed, 9 insertions, 7 deletions
diff --git a/pkg/compiler/types.go b/pkg/compiler/types.go
index 0c25fcab6..d6d45461a 100644
--- a/pkg/compiler/types.go
+++ b/pkg/compiler/types.go
@@ -121,10 +121,11 @@ var typeVoid = &typeDesc{
}
var typeArray = &typeDesc{
- Names: []string{"array"},
- CantBeOpt: true,
- OptArgs: 1,
- Args: []namedArg{{"type", typeArgType}, {"size", typeArgRange}},
+ Names: []string{"array"},
+ CanBeTypedef: true,
+ CantBeOpt: true,
+ OptArgs: 1,
+ Args: []namedArg{{"type", typeArgType}, {"size", typeArgRange}},
CheckConsts: func(comp *compiler, t *ast.Type, args []*ast.Type, base prog.IntTypeCommon) {
if len(args) > 1 && args[1].Value == 0 && args[1].Value2 == 0 {
comp.error(args[1].Pos, "arrays of size 0 are not supported")
@@ -440,9 +441,10 @@ var typeBuffer = &typeDesc{
}
var typeString = &typeDesc{
- Names: []string{"string"},
- OptArgs: 2,
- Args: []namedArg{{"literal or flags", typeArgStringFlags}, {"size", typeArgInt}},
+ Names: []string{"string"},
+ CanBeTypedef: true,
+ OptArgs: 2,
+ Args: []namedArg{{"literal or flags", typeArgStringFlags}, {"size", typeArgInt}},
CheckConsts: func(comp *compiler, t *ast.Type, args []*ast.Type, base prog.IntTypeCommon) {
if len(args) > 1 {
size := args[1].Value