First steps towards refactoring DefinitionsBuilder

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Implementation and tests for sclass blocks.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Definition builder for methods.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Basic docs for DefinitionBuilder::RubyMethod.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Basic tests for building variable assignments.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
after_initialize callback for RubyLint::Iterator.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Initial work for a ruby-lint "virtual machine".

This VM (which isn't entirely a VM but I like the name) will be the replacement
of the rather clunky RubyLint::DefinitionsBuilder class. The new process of
building definitions is broken up into smaller parts for specific cases (e.g.
classes and modules) and uses stacks for assigning/resolving variable values.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Handle the mass assignment of multiple variables.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Upgraded parser to 2.0.0 beta1.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Better way of handling assignments and variables.

This commit introduces a better way of assigning values and resolving
variables. This is done by using RubyLint::NestedStack instead of a collection
of arrays and nesting counters.

Note that the code in this commit is considered to be broken since a lot of
work still has to be done and a lot of tests (as a result of this) are still
failing.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Tests and documentation for NestedStack.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Build primitives using a dedicated builder class.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Cleanup for pushing/handling variable values.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Basic setup for building arrays with members.

This setup currently doesn't work when first creating an array and *then*
assigning members. This will be fixed in future commits.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Raw setup for handling array index assignments.

The next step is to clean this up a bit and move it into its own definition
builder class (RubyLint::DefinitionBuilder::RubyArray).

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Handling of Hash (key) assignments.

ruby-lint is once yet again able to properly deal with Hash assignments in a
similar fashion to how arrays are processed.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Handle OR assignments.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Support for AND assignments.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Fixed failing tests for mass variable assignments.

These were broken by the re-introduction of member assignments and buffering of
arrays as definition instances.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
Re-introduced reference counting of variables.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>