From: Jay Freeman (saurik) Date: Tue, 5 Jan 2016 09:29:50 +0000 (-0800) Subject: Fix Ruby Block arguments and make them lexicalish. X-Git-Tag: v0.9.590~52 X-Git-Url: https://git.saurik.com/cycript.git/commitdiff_plain/eb710395df37f75505bcd0d5a9e6216b4673d753?hp=447b698cea96010d0850e056348ef6cd085b96d9 Fix Ruby Block arguments and make them lexicalish. --- diff --git a/Replace.cpp b/Replace.cpp index f84d7e3..46dd8bb 100644 --- a/Replace.cpp +++ b/Replace.cpp @@ -967,7 +967,10 @@ CYIdentifierFlags *CYScope::Declare(CYContext &context, CYIdentifier *identifier else if (existing->kind_ == CYIdentifierGlobal || existing->kind_ == CYIdentifierMagic) existing->kind_ = kind; else if (existing->kind_ == CYIdentifierLexical || kind == CYIdentifierLexical) - _assert(false); // XXX: throw new SyntaxError() + _assert(false); + else if (transparent_ && existing->kind_ == CYIdentifierArgument && kind == CYIdentifierVariable) + _assert(false); + // XXX: throw new SyntaxError() instead of these asserts return existing; } @@ -1005,10 +1008,6 @@ void CYScope::Close(CYContext &context) { CYForEach (i, internal_) { _assert(i->identifier_->next_ == i->identifier_); switch (i->kind_) { - case CYIdentifierArgument: { - _assert(!transparent_); - } break; - case CYIdentifierLexical: { if (!damaged_) { CYIdentifier *replace(context.Unique());