Setup(driver, parser);
if (parser.parse() != 0 || !driver.errors_.empty())
- _assert(false);
+ return NULL;
CYExpress *express(dynamic_cast<CYExpress *>(driver.program_->statements_));
_assert(express != NULL);
case CYDriver::AutoMessage: {
CYDriver::Context &thing(driver.contexts_.back());
- expression = $M($M($ CYIndirect(thing.context_), $S("isa")), $S("messages"));
+ expression = $M($C1($V("object_getClass"), thing.context_), $S("messages"));
for (CYDriver::Context::Words::const_iterator part(thing.words_.begin()); part != thing.words_.end(); ++part)
prefix << (*part)->word_ << ':';
} break;
CYUTF8String json(Run(pool, client_, code));
CYExpression *result(ParseExpression(json));
+ if (result == NULL)
+ return NULL;
+
CYArray *array(dynamic_cast<CYArray *>(result));
if (array == NULL) {
if (parser.parse() != 0 || !driver.errors_.empty()) {
for (CYDriver::Errors::const_iterator error(driver.errors_.begin()); error != driver.errors_.end(); ++error) {
cy::position begin(error->location_.begin);
- if (begin.line != lines.size() || begin.column - 1 != lines.back().size() || error->warning_) {
+ if (begin.line != lines.size() || begin.column < lines.back().size() || error->warning_) {
cy::position end(error->location_.end);
if (begin.line != lines.size()) {
}
std::cerr << "....";
- for (size_t i(0); i != begin.column - 1; ++i)
+ for (size_t i(0); i != begin.column; ++i)
std::cerr << '.';
if (begin.line != end.line || begin.column == end.column)
std::cerr << '^';
bool compile(false);
CYOptions options;
- append_history$ = reinterpret_cast<int (*)(int, const char *)>(dlsym(RTLD_DEFAULT, "append_history"));
+ append_history$ = (int (*)(int, const char *)) (dlsym(RTLD_DEFAULT, "append_history"));
#ifdef CY_ATTACH
pid_t pid(_not(pid_t));