-/* Cycript - Optimizing JavaScript Compiler/Runtime
- * Copyright (C) 2009-2015 Jay Freeman (saurik)
+/* Cycript - The Truly Universal Scripting Language
+ * Copyright (C) 2009-2016 Jay Freeman (saurik)
*/
/* GNU Affero General Public License, Version 3 {{{ */
}
CYExpression *CYAssignment::Replace(CYContext &context) {
+ // XXX: this is a horrible hack but I'm a month over schedule :(
+ if (CYSubscriptMember *subscript = dynamic_cast<CYSubscriptMember *>(lhs_))
+ return $C2($M(subscript->object_, $S("$cys")), subscript->property_, rhs_);
context.Replace(lhs_);
context.Replace(rhs_);
return this;
if (tail_->constructor_ == NULL)
tail_->constructor_ = $ CYFunctionExpression(NULL, NULL, NULL);
+ tail_->constructor_->name_ = name_;
tail_->constructor_ = CYSuperize(context, tail_->constructor_);
context.super_ = old;
return object_.Replace(context, lhs_);
}
-CYStatement *CYExternal::Replace(CYContext &context) {
- return $E($ CYAssign($V(typed_->identifier_), $C1(typed_->Replace(context), $C2($V("dlsym"), $V("RTLD_DEFAULT"), $S(typed_->identifier_->Word())))));
+CYStatement *CYExternalDefinition::Replace(CYContext &context) {
+ return $E($ CYAssign($V(typed_->identifier_), $ CYExternalExpression(abi_, typed_)));
+}
+
+CYTarget *CYExternalExpression::Replace(CYContext &context) {
+ return $C1(typed_->Replace(context), $C2($V("dlsym"), $V("RTLD_DEFAULT"), $S(typed_->identifier_->Word())));
}
CYNumber *CYFalse::Number(CYContext &context) {
default:; } }
}
+CYTarget *CYSubscriptMember::Replace(CYContext &context) {
+ return $C1($M(object_, $S("$cyg")), property_);
+}
+
CYElementValue *CYSpan::Replace(CYContext &context) { $T(NULL)
return $ CYElementValue(expression_, $ CYElementValue(string_, next_->Replace(context)));
}
return typed_->Replace(context);
}
+CYTarget *CYTypeInt128::Replace(CYContext &context) {
+ return $V(signing_ == CYTypeUnsigned ? "uint128" : "int128");
+}
+
CYTarget *CYTypeIntegral::Replace(CYContext &context) {
bool u(signing_ == CYTypeUnsigned);
switch (length_) {