示例#1
0
 protected virtual void VisitCaseSyntax(CaseSyntax pNode)
 {
     foreach (var c in pNode.Conditions)
     {
         Visit(c);
     }
     Visit(pNode.Body);
 }
示例#2
0
        protected virtual SyntaxNode VisitCaseSyntax(CaseSyntax pNode)
        {
            List <SyntaxNode> conditions = new List <SyntaxNode>(pNode.Conditions.Count);

            foreach (var c in pNode.Conditions)
            {
                conditions.Add(Visit(c));
            }
            return(SyntaxFactory.Case(conditions, (BlockSyntax)Visit(pNode.Body)));
        }
示例#3
0
        protected override void VisitCaseSyntax(CaseSyntax pNode)
        {
            var caseType = Store.GetValue <SmallType>("CaseType");

            foreach (var c in pNode.Conditions)
            {
                if (!CanCast(caseType, c.Type))
                {
                    CompilerErrors.TypeCastError(c.Type, caseType, pNode.Span);
                }
            }
            base.VisitCaseSyntax(pNode);
        }
        protected override void VisitCaseSyntax(CaseSyntax pNode)
        {
            _locals.AddScope();
            foreach (var c in pNode.Conditions)
            {
                Visit(c);
            }

            using (var iw = Store.AddValue("CanBreak", true))
            {
                _breakCount++;
                Visit(pNode.Body);
                _breakCount--;
            }
            _locals.RemoveScope();
        }
示例#5
0
 public virtual void Visit(CaseSyntax caseSyntax)
 {
     Visit(caseSyntax.Expression);
     Visit(caseSyntax.Statements);
 }
示例#6
0
 public BoundCase(BoundExpression boundExpression, BoundStatement boundStatement, CaseSyntax syntax)
     : base(syntax)
 {
     BoundExpression = boundExpression;
     BoundStatement = boundStatement;
 }
示例#7
0
文件: Binder.cs 项目: lawl-dev/Kiwi
 private BoundCase BindCase(CaseSyntax syntax)
 {
     var boundExpression = BindExpression(syntax.Expression);
     var boundStatement = BindStatement(syntax.Statements);
     return new BoundCase(boundExpression, boundStatement, syntax);
 }