From a8b5c009394a6b38ce18e01a53ab7c6980294ae7 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Thu, 14 Nov 2019 22:14:04 +0300 Subject: [PATCH] parser: allow << >> with enums --- vlib/compiler/expression.v | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/vlib/compiler/expression.v b/vlib/compiler/expression.v index 43dec53286..43bbcf93da 100644 --- a/vlib/compiler/expression.v +++ b/vlib/compiler/expression.v @@ -415,8 +415,11 @@ fn (p mut Parser) expression() string { return 'void' } else { - if !is_integer_type(typ) { - p.error('cannot use shift operator on non-integer type `$typ`') + if !is_integer_type(typ) { + t := p.table.find_type(typ) + if t.cat != .enum_ { + p.error('cannot use shift operator on non-integer type `$typ`') + } } p.next() p.gen(' << ') @@ -425,8 +428,11 @@ fn (p mut Parser) expression() string { } } if p.tok == .righ_shift { - if !is_integer_type(typ) { - p.error('cannot use shift operator on non-integer type `$typ`') + if !is_integer_type(typ) { + t := p.table.find_type(typ) + if t.cat != .enum_ { + p.error('cannot use shift operator on non-integer type `$typ`') + } } p.next() p.gen(' >> ')