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);
        }
Example #2
0
 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);
     }
 }