2201 ('foo("string")', None, None, 'invalid argument list') |
2201 ('foo("string")', None, None, 'invalid argument list') |
2202 >>> _parsealiasdecl('foo($1, $2') |
2202 >>> _parsealiasdecl('foo($1, $2') |
2203 ('foo($1, $2', None, None, 'at 10: unexpected token: end') |
2203 ('foo($1, $2', None, None, 'at 10: unexpected token: end') |
2204 >>> _parsealiasdecl('foo("string') |
2204 >>> _parsealiasdecl('foo("string') |
2205 ('foo("string', None, None, 'at 5: unterminated string') |
2205 ('foo("string', None, None, 'at 5: unterminated string') |
|
2206 >>> _parsealiasdecl('foo($1, $2, $1)') |
|
2207 ('foo', None, None, 'argument names collide with each other') |
2206 """ |
2208 """ |
2207 p = parser.parser(_tokenizealias, elements) |
2209 p = parser.parser(_tokenizealias, elements) |
2208 try: |
2210 try: |
2209 tree, pos = p.parse(decl) |
2211 tree, pos = p.parse(decl) |
2210 if (pos != len(decl)): |
2212 if (pos != len(decl)): |
2225 args = [] |
2227 args = [] |
2226 for arg in getfuncargs(tree): |
2228 for arg in getfuncargs(tree): |
2227 if not isvalidsymbol(arg): |
2229 if not isvalidsymbol(arg): |
2228 return (decl, None, None, _("invalid argument list")) |
2230 return (decl, None, None, _("invalid argument list")) |
2229 args.append(getsymbol(arg)) |
2231 args.append(getsymbol(arg)) |
|
2232 if len(args) != len(set(args)): |
|
2233 return (name, None, None, |
|
2234 _("argument names collide with each other")) |
2230 return (name, ('func', ('symbol', name)), args, None) |
2235 return (name, ('func', ('symbol', name)), args, None) |
2231 |
2236 |
2232 return (decl, None, None, _("invalid format")) |
2237 return (decl, None, None, _("invalid format")) |
2233 except error.ParseError, inst: |
2238 except error.ParseError, inst: |
2234 return (decl, None, None, parseerrordetail(inst)) |
2239 return (decl, None, None, parseerrordetail(inst)) |