From e8d8b953fb757f2f576c880496a384b6201011df Mon Sep 17 00:00:00 2001 From: Dmitry Cheryasov Date: Tue, 26 Oct 2010 16:13:37 +0300 Subject: [PATCH] Now nested-tuple arguments autocomplete without failing an assertion. --- .../python/psi/impl/PyReferenceImpl.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/python/src/com/jetbrains/python/psi/impl/PyReferenceImpl.java b/python/src/com/jetbrains/python/psi/impl/PyReferenceImpl.java index 5db0baeb51cb..2256563bba43 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyReferenceImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyReferenceImpl.java @@ -478,14 +478,22 @@ public class PyReferenceImpl implements PsiReferenceEx, PsiPolyVariantReference return; } PyNamedParameter namedParam = par.getAsNamed(); - assert namedParam != null; - if (!namedParam.isKeywordContainer() && !namedParam.isPositionalContainer()) { - final LookupElement item = PyUtil.createNamedParameterLookup(namedParam.getName()); - myRet.add(item); + if (namedParam != null) { + if (!namedParam.isKeywordContainer() && !namedParam.isPositionalContainer()) { + final LookupElement item = PyUtil.createNamedParameterLookup(namedParam.getName()); + myRet.add(item); + } + else if (namedParam.isKeywordContainer()) { + myHasKwArgs = true; + kwArgsParam = namedParam; + } } - else if (namedParam.isKeywordContainer()) { - myHasKwArgs = true; - kwArgsParam = namedParam; + else { + PyTupleParameter nestedTupleParam = par.getAsTuple(); + if (nestedTupleParam != null) { + nestedTupleParam.acceptChildren(this); + } + // else it's a lone star parameter, it can't contribute to completion } }