예제 #1
0
파일: ExprVisitor.cs 프로젝트: jzhang919/P
        public override IPExpr VisitNamedTupleAccessExpr(PParser.NamedTupleAccessExprContext context)
        {
            var subExpr = Visit(context.expr());

            if (!(subExpr.Type.Canonicalize() is NamedTupleType tuple))
            {
                throw handler.TypeMismatch(subExpr, TypeKind.NamedTuple);
            }
            var fieldName = context.field.GetText();

            if (!tuple.LookupEntry(fieldName, out var entry))
            {
                throw handler.MissingNamedTupleEntry(context.field, tuple);
            }
            return(new NamedTupleAccessExpr(context, subExpr, entry));
        }
예제 #2
0
 public override object VisitNamedTupleAccessExpr(PParser.NamedTupleAccessExprContext context)
 {
     return(null);
 }