2017-02-19 16:29:24 +03:00
|
|
|
|
// Copyright (c) Ivan Bondarev, Stanislav Mihalkovich (for details please see \doc\copyright.txt)
|
|
|
|
|
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
|
|
|
|
|
using System;
|
2017-01-22 21:00:20 +03:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
|
|
using PascalABCCompiler.SyntaxTree;
|
|
|
|
|
|
|
|
|
|
|
|
namespace SyntaxVisitors.SugarVisitors
|
|
|
|
|
|
{
|
|
|
|
|
|
public class TupleVisitor : BaseChangeVisitor
|
|
|
|
|
|
{
|
|
|
|
|
|
public static TupleVisitor New
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return new TupleVisitor(); }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-08-09 09:31:48 +03:00
|
|
|
|
public override void visit(read_accessor_name wn)
|
|
|
|
|
|
{
|
2018-12-05 11:36:45 +03:00
|
|
|
|
DefaultVisit(wn);
|
2018-08-09 09:31:48 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
2018-09-23 19:00:56 +03:00
|
|
|
|
public override void visit(unnamed_type_object u)
|
|
|
|
|
|
{
|
|
|
|
|
|
DefaultVisit(u);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override void visit(name_assign_expr_list ne)
|
|
|
|
|
|
{
|
|
|
|
|
|
DefaultVisit(ne);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-09-23 22:38:39 +03:00
|
|
|
|
public override void visit(name_assign_expr ne)
|
|
|
|
|
|
{
|
|
|
|
|
|
DefaultVisit(ne);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-09-23 19:00:56 +03:00
|
|
|
|
|
2017-01-26 15:47:13 +03:00
|
|
|
|
public override void visit(tuple_node tup)
|
2017-01-22 21:00:20 +03:00
|
|
|
|
{
|
2019-05-16 15:42:16 +03:00
|
|
|
|
var dn = new dot_node(new dot_node(new ident("?System", tup.source_context), new ident("Tuple", tup.source_context), tup.source_context), new ident("Create", tup.source_context));
|
2017-01-22 21:00:20 +03:00
|
|
|
|
var mc = new method_call(dn, tup.el, tup.source_context);
|
|
|
|
|
|
|
2017-01-26 15:47:13 +03:00
|
|
|
|
//var sug = new sugared_expression(tup, mc, tup.source_context); - нет никакой семантической проверки - всё - на уровне синтаксиса!
|
2017-01-22 21:00:20 +03:00
|
|
|
|
|
2018-09-27 17:59:37 +03:00
|
|
|
|
//ReplaceUsingParent(tup, mc); - исправление #1199. Оказывается, ReplaceUsingParent и Replace не эквивалентны - у копии Parent на старого родителя
|
2018-09-25 20:35:43 +03:00
|
|
|
|
Replace(tup, mc);
|
2017-01-22 21:00:20 +03:00
|
|
|
|
visit(mc);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|