Skip to content

Commit

Permalink
Added a sanity check for super operator loading. Unit test added.
Browse files Browse the repository at this point in the history
  • Loading branch information
marcobambini committed May 26, 2017
1 parent 63a726b commit a39c6a4
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/runtime/gravity_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -457,6 +457,11 @@ static bool object_real_load (gravity_vm *vm, gravity_value_t *args, uint16_t na
}
}
}

// sanity check for super operator
if (is_super && !VALUE_ISA_CLASS(target)) {
RETURN_ERROR("Unable to lookup super for non class object");
}

// retrieve class and process key
gravity_class_t *c = (is_super) ? VALUE_AS_CLASS(target) : gravity_value_getclass(target);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#unittest {
name: "Fiber basic usage.";
result: 23;
};

var g = 0;

func main() {
var fiber = Fiber.create({
g += 10;
Fiber.yield()
g += 10;
});

g += 1;
fiber()
g += 1;
super.d()
fiber()
g += 1;
;
;

g += 1;
fiber()
g += 1; super.d()
fiber()
g += 1;
fiber()
g += 1;
4 fiber()
g += 1;
fiber()
g += 1; return g;
}

0 comments on commit a39c6a4

Please sign in to comment.