public override object VisitRoutineArgList([NotNull] SLangGrammarParser.RoutineArgListContext context) { IList <RoutineArgNameTableItem> res = new List <RoutineArgNameTableItem>(context.routineArg().Length); foreach (var arg in context.routineArg()) { var routineArg = (RoutineArgNameTableItem)Visit(arg); ThrowIfReservedWord(routineArg.Name, ModuleData.File, arg.Id().Symbol); if (res.Any(a => a.Name == routineArg.Name)) { ThrowParameterAlreadyDefinedException(routineArg.Name, ModuleData.File, arg.Id().Symbol); } res.Add(routineArg); } return(res); }
private void CheckParamsNameConflicts(SLangGrammarParser.ThisHeaderContext thisHeader, SLangGrammarParser.RoutineArgListContext argList) { if (thisHeader != null) { var token = thisHeader.Id().Symbol; moduleItem.CheckCommonNamesConflicts(token.Text, token.Line, token.Column); } foreach (var arg in argList.routineArg()) { var token = arg.Id().Symbol; moduleItem.CheckCommonNamesConflicts(token.Text, token.Line, token.Column); } }