public override IPExpr VisitTupleAccessExpr(PParser.TupleAccessExprContext context) { var subExpr = Visit(context.expr()); var fieldNo = int.Parse(context.field.GetText()); if (!(subExpr.Type.Canonicalize() is TupleType tuple)) { throw handler.TypeMismatch(subExpr, TypeKind.Tuple, TypeKind.NamedTuple); } if (fieldNo >= tuple.Types.Count) { throw handler.OutOfBoundsTupleAccess(context.field, tuple); } return(new TupleAccessExpr(context, subExpr, fieldNo, tuple.Types[fieldNo])); }
public override object VisitTupleAccessExpr(PParser.TupleAccessExprContext context) { return(null); }