private void ShowType(ParamNode node) { if (!_showTypes) { return; } if (node.ExprType == ExprTypeKind.None) { return; } _wrt.Write(':'); _wrt.Write(node.ExprType.ToString()); }
private ParamNode ParseParam(int index) { Contracts.Assert(0 <= index); Token tok = TokCur; string name; if (tok.Kind == TokKind.Ident) { name = tok.As <IdentToken>().Value; TidNext(); } else { PostTidError(TokCur, TokKind.Ident); name = "<missing>"; } DataViewType type; if (index < _types.Length) { type = _types[index]; for (int i = 0; ; i++) { Contracts.Assert(i < _perm.Length); Contracts.Assert(0 <= _perm[i] && _perm[i] < _perm.Length); if (_perm[i] == index) { index = i; break; } } } else { PostError(tok, "Too many parameters, expected {0}", _types.Length); type = null; } var res = new ParamNode(tok, name, index, type); if (res.ExprType == ExprTypeKind.None) { PostError(tok, "Unsupported type"); } return(res); }
public override void Visit(ParamNode node) { Contracts.AssertValue(node); _wrt.Write(node.Name); ShowType(node); }
public override void Visit(ParamNode node) { Contracts.Assert(false); }
public abstract void Visit(ParamNode node);