Mike Gerwitz
021b67bbff
Whoops - abstract member param names may now contain underscores
2011-12-22 09:10:51 -05:00
Mike Gerwitz
a10cf82a12
Abstract member declaration parameter name restrictions now apply to all abstract member declarations, not just interfaces
2011-12-21 20:12:05 -05:00
Mike Gerwitz
50904390da
Interface members may now only contain arg names that are valid var names
...
- This should apply to all abstract definitions. This will be resolved in the next commit. I am tired.
2011-12-20 23:56:46 -05:00
Mike Gerwitz
e9cf630d0b
AbstractClass.implement().extend() will now properly preserve abstract flag on resulting class
...
- This is a bug fix. The resulting class was not declared abstract, which is a problem if the resulting class chose not to provide a concrete implementation for each of the abstract members.
2011-12-20 20:06:38 -05:00
Mike Gerwitz
2136ebedd5
Now properly handling extending from objects and properly throwing errors for scalars
2011-12-15 22:58:33 -05:00
Mike Gerwitz
e24784529e
Resolved majority of Closure Compiler warnings (VERBOSE)
...
- Ignored warnings from tests for now
- VERBOSE flag removed from Makefile for now until I can figure out how to
resolve certain warnings
2011-12-13 21:19:14 -05:00
Mike Gerwitz
d1b1d2691a
Fixed initial warnings provided by Closure Compiler
...
Getting ready for release means that we need to rest assured that everything is
operating as it should. Tests do an excellent job at aiding in this, but they
cannot cover everything. For example, a simple missing comma in a variable
declaration list could have terrible, global consequences.
2011-12-10 11:18:41 -05:00
Mike Gerwitz
e0254f6441
Removed invalid @package tags
...
Not a valid tag in jsdoc
2011-12-06 20:19:31 -05:00
Mike Gerwitz
e4cd1eabe5
Fixed issue with minified files in IE
...
Ah - you have to love those "ah-ha!" moments. The issue here is that both
uglify-js and closure compiler mangled the names in such a way that the var and
the function name had different values. In the case of closure compiler, the
function name was used to instantiate the constructor if the 'new' keyword was
omitted. This worked fine in all other tested browsers, but IE handles it
differently.
2011-12-06 18:20:43 -05:00
Mike Gerwitz
1a3b5f2893
Now using vm module in node instead of process.binding.Script (deprecated in newer versions of node)
2011-12-04 12:55:00 -05:00
Mike Gerwitz
27eea93d6f
Now setting mocked console in warn module for tests
...
- Replacing console broken in newer versions of node/v8
- Replacing console.warn/log works fine, but is a poor choice for testing
2011-12-04 12:54:56 -05:00
Mike Gerwitz
446aa8d413
Fixed __self assignment for FF
...
This little experience was rather frustrating. Indeed, it would imply that
the static implementation (at least, accessing protected and private static
members) was always broken in FF. I should be a bit more diligent in my testing.
Or perhaps it broke in a more recent version of FF, which is more likely. The
problem seems to be that we used defineSecureProp() for an assignment to the
actual class, then later properly assigned it to class.___$$svis$$.
Of course, defineSecureProp() makes it read-only, so this failed, causing
an improper assignment for __self, breaking the implementation. As such,
this probably broke in newer versions of FF and worked properly in older versions.
More concerningly is that the implementations clearly differ between Chromium
and Firefox. It may be that Firefox checks the prototype chain, whereas Chromium
(v8, specifically) will simply write to that object, ignoring that the property
further down the prototype chain is read-only.
2011-12-04 00:32:16 -05:00
Mike Gerwitz
e41495c0d1
Added private member name conflict validations
2011-12-03 00:38:41 -05:00
Mike Gerwitz
ba28f0a753
Now implicitly adding abstract keyword for interface method declarations
2011-11-28 15:10:26 -05:00
Mike Gerwitz
87dd1b8961
[ #29 ] Re-added interface name to interface errors since abstract requirement change
2011-11-19 22:17:59 -05:00
Mike Gerwitz
a33df4dcbe
[ #29 ] Refactored interface extend() test against non-interface into ExtendTest
2011-11-19 22:05:18 -05:00
Mike Gerwitz
4fe20762c8
'abstract' keyword no longer required for interface method declarations
...
- A warning is not yet being thrown for redundancy if the abstract keyword is
explicitly specified
2011-11-19 19:37:59 -05:00
Mike Gerwitz
4e49282515
Fixed bug causing invocation error when accessing undefined static members on a non-class base
2011-11-19 00:10:30 -05:00
Mike Gerwitz
80846e95f3
__proto__ => getPrototypeOf
2011-11-19 00:10:24 -05:00
Mike Gerwitz
94419742c0
Resolved IE8 test failures
...
- Additional checks for its buggy defineProperty(), etc implementation
2011-11-18 08:57:37 -05:00
Mike Gerwitz
8e079129f3
ClassBuilder.isInstanceOf() will no longer throw errors when given undefined for either argument
...
- Yes, this is just quickly adding a test to a pre-existing, terrible format.
This will be refactored with the rest of the test case.
2011-11-15 22:23:00 -05:00
Mike Gerwitz
c77d989b63
Prefixing warning output with 'Warning: '
2011-11-05 12:10:20 -04:00
Mike Gerwitz
bc589c035f
Added warning handler to class facade
...
- This isn't yet tested; have to begin test case for facade
- Do note that the actual calling by MemberBuilderValidator is tested
2011-11-05 12:07:52 -04:00
Mike Gerwitz
8bcd55dbbb
MemberBuilderValidator will now throw a warning if 'override' keyword is used without a super method
2011-11-05 11:58:12 -04:00
Mike Gerwitz
1fa92d44a1
[ #25 ] Added Getter/Setter validator call tests for MemberBuilder
2011-11-05 09:40:58 -04:00
Mike Gerwitz
e809c10dfe
[ #25 ] Added MemberBuilder/PropTest for validator call
2011-11-04 23:08:41 -04:00
Mike Gerwitz
fdf630458a
[ #25 ] instanceof => typeof for functions; lib/
2011-11-03 22:00:18 -04:00
Mike Gerwitz
4e2af2333d
[ #25 ] Now injecting MemberBuilderValidator into MemberBuilder
2011-11-02 23:28:23 -04:00
Mike Gerwitz
3912f2d369
[ #25 ] Began refactoring test-class_builder-static into new test case system
2011-11-02 23:23:13 -04:00
Mike Gerwitz
b063a91e40
[ #25 ] Added visibility de-escalation and escalation tests to MemberBuilderValidator for getters/setters
2011-10-30 12:06:09 -04:00
Mike Gerwitz
91332353e9
[ #25 ] Added attachInstanceOf TODO
2011-10-30 11:56:54 -04:00
Mike Gerwitz
3c676de55d
[ #25 ] Combined buildGetter() and buildSetter()
...
This helped to get rid of some unnecessary duplicate code and should also help
to improve performance slightly for getter/setter definitions.
2011-10-29 08:25:51 -04:00
Mike Gerwitz
02cd52cfb7
[ #25 ] Began refactoring getter/setter building into a single method (util.propParse)
...
I'm unsure as to why I originally placed them in separate methods. propParse() will
always find a getter at the same time it finds a setter, and vice versa, should they
both have been defined on the object.
2011-10-29 08:08:02 -04:00
Mike Gerwitz
2ba8e2c8f0
[ #25 ] Refactored common getter/setter code into common method within MemberBuilder
2011-10-29 07:47:22 -04:00
Mike Gerwitz
93021f3dbc
[ #25 ] Moved getter/setter validation tests into new test case
...
Much more elegant a test case now.
2011-10-28 00:22:50 -04:00
Mike Gerwitz
ad0343fb9b
[ #25 ] Moved getter/setter validation logic into MemberBuilderValidator
...
- Tests have not yet been moved
2011-10-28 00:08:22 -04:00
Mike Gerwitz
05df0b485c
[ #25 ] Moved single access modifier getter/setter test to VisibilityTest
2011-10-27 20:46:30 -04:00
Mike Gerwitz
f19a62e733
[ #25 ] Moved public default getter/setter test to new location
2011-10-27 20:43:56 -04:00
Mike Gerwitz
f4b8eb3589
[ #25 ] Added test in MemberBuilder/VisibilityTest to ensure multiple access modifiers are not used
2011-10-25 23:30:57 -04:00
Mike Gerwitz
625f62bbf1
[ #25 ] Moved MemberBuilderValidator property tests into new test case
2011-10-23 01:14:13 -04:00
Mike Gerwitz
a91cb01998
[ #25 ] Moved MethodBuilder property validation into MemberBuilderValidator
...
- Tests have not yet been moved
2011-10-23 00:43:08 -04:00
Mike Gerwitz
a5e2a507f2
[ #25 ] Throwing error instead of method hiding; will implement in future
2011-10-22 13:57:17 -04:00
Mike Gerwitz
6e7e031ff9
[ #25 ] [ #25 ] Re-added accidently removed portion of test
2011-10-22 11:06:03 -04:00
Mike Gerwitz
f9b951ddb2
[ #25 ] [ #25 ] Began moving MemberBuilder validation rules into MemberBuilderValidator (moved method rules)
2011-10-22 01:00:45 -04:00
Mike Gerwitz
e6830b741f
[ #25 ] Now using keywords to compare visibility levels in validations to eliminiate fallback inconsistencies
...
Ironic, considering the current refactoring (not yet committed) of MemberBuilder to split validation logic into MemberBuilderValidator was partially to be able to easily override the fallback logic. It's a useful refactoring nonetheless, but it could have waited.
2011-10-22 00:32:59 -04:00
Mike Gerwitz
f6369ba2c4
[ #25 ] No longer using util.isAbstractMethod() for method validation
2011-10-22 00:13:51 -04:00
Mike Gerwitz
9c9759a2b1
Moved validateMethod() function into MemberBuilder prototype to prepare for overriding with FallbackMemberBuilder
2011-10-14 22:14:29 -04:00
Mike Gerwitz
024f3b778c
Began adding FallbackMemberBuilder test case
...
This is the first test case to use the new basic xUnit-style system. This
system is likely to evolve over time. Right now it's purely for
setUp, organizational and output purposes.
2011-10-14 22:05:22 -04:00
Mike Gerwitz
24e9dd2549
Oops. Dummy want to name things correctly? ( #25 )
2011-09-02 22:44:11 -04:00
Mike Gerwitz
bc636637cc
Refactored new and override method wrappers into separate prototypes
...
- Note that, since we're mid-refactor, this is a bit of a mess
2011-08-31 00:24:19 -04:00
Mike Gerwitz
ce1370e025
Now passing getInst() directly into MethodwrapperFactory factory function, like good 'ol times
...
- I seem to have forgotten that this is necessary due to the static implementation
2011-08-31 00:05:07 -04:00
Mike Gerwitz
3c5362db0a
Added MethodWrapperFactory prototype
...
- Not yet used
2011-08-28 17:36:27 -04:00
Mike Gerwitz
2efdbe8969
Added missing MemberBuilder docblocks ( #25 )
2011-08-27 17:08:05 -04:00
Mike Gerwitz
302bc1540b
Removed old member_builder module
2011-08-14 18:53:40 -04:00
Mike Gerwitz
758162ad0f
Began refactoring member_builder module into MemberBuilder prototype ( #25 )
2011-08-14 18:47:48 -04:00
Mike Gerwitz
fd95f38c87
Integrated VisibilityObjectFactory and removed old propobj ( #25 )
...
- Note that the excessive gluing is temporary
2011-08-13 23:58:08 -04:00
Mike Gerwitz
f3352e6d74
Added VisibilityObjectFactoryFactory ( #25 )
...
- This may be temporary, depending on the ultimate implementation. This is intended to ease into the refactoring.
2011-08-13 23:00:03 -04:00
Mike Gerwitz
b4b09930bd
Added property object comment to VisibilityObjectFactory ( #25 )
2011-08-13 22:42:51 -04:00
Mike Gerwitz
567c9f59a0
Implemented FallbackVisibilityObjectFactory ( #25 )
2011-08-13 22:42:33 -04:00
Mike Gerwitz
79652a1120
Moved non-fallback visibility object into VisibilityObjectFactory (system does not yet use it) ( #25 )
2011-08-11 23:11:37 -04:00
Mike Gerwitz
7a579ab2aa
Initial refactoring of class_builder module into ClassBuilder ctor ( #25 )
2011-08-09 17:27:26 -04:00
Mike Gerwitz
a401c31996
Can no longer override non-virtual methods ( #19 )
2011-08-04 00:44:20 -04:00
Mike Gerwitz
2569dacf15
Override keyword is now required to override a virtual method ( #19 )
2011-08-04 00:32:10 -04:00
Mike Gerwitz
bd4e18acc6
Implicit method hiding warning now applies to virtual methods as well as non-virtual ( #19 )
2011-08-03 22:40:55 -04:00
Mike Gerwitz
db18a61d30
[ #19 ] Began implementing method hiding (added warning for implicit hiding)
2011-07-06 19:35:00 -04:00
Mike Gerwitz
bc3e879956
Corrected Warning stack trace
2011-07-06 19:12:08 -04:00
Mike Gerwitz
1b1a4b60d5
Altered warning display and stack trace
2011-07-06 17:55:40 -04:00
Mike Gerwitz
81fa2ae424
Merge branch 'master' into 'virtual/master'
...
- Resolved conflicts
2011-06-30 23:00:13 -04:00
Mike Gerwitz
adb7e088b7
[ #19 ] Cannot declare virtual static methods
2011-06-09 22:22:14 -04:00
Mike Gerwitz
08dc2559b4
[ #19 ] Cannot declare virtual properties
2011-06-09 19:46:13 -04:00
Mike Gerwitz
4fea62a8ed
[ #19 ] Removed 'final' keyword and all associated logic
...
- Kept FinalClass'
2011-06-08 01:26:04 -04:00
Mike Gerwitz
8b83e85c43
[ #19 ] Implemented 'virtual' keyword
...
- Baby steps. 'override' keyword is not yet necessary.
- Final not yet removed
2011-06-08 01:11:53 -04:00
Mike Gerwitz
24a04369ae
Properly copying over abstract methods in implement()
2011-06-08 01:10:44 -04:00
Mike Gerwitz
557dcf6904
Fixed static bug and removed late static binding
...
- Late static binding will be revisited in the future
2011-05-31 22:29:07 -04:00
Mike Gerwitz
9db4e8d99f
Supplying alternative to getMethodInstance() for static methods
2011-05-30 23:03:08 -04:00
Mike Gerwitz
85c4c70b7d
Removed unneeded argument
2011-05-30 20:10:52 -04:00
Mike Gerwitz
76bc7361d3
Implemented GH#2 - Keyword restrictions; throw exception when unknown keywords are used
2011-05-22 22:11:57 -04:00
Mike Gerwitz
cf344186fc
Implement GH#1 Provide useful error when attempting to extend from non-constructor
2011-05-22 21:54:41 -04:00
Mike Gerwitz
8c62ee021c
Added support for final subtypes
2011-05-22 21:35:29 -04:00
Mike Gerwitz
a67d704837
Added support for named abstract subclasses
2011-05-22 21:05:46 -04:00
Mike Gerwitz
db9de2712e
Added class_abstract docblocks
2011-05-22 19:15:19 -04:00
Mike Gerwitz
e0de030cee
Implemented AbstractClass
...
- Some of this functionality requires further refactoring
2011-05-22 16:08:48 -04:00
Mike Gerwitz
b359906aa3
Refactored method validations into separate method
2011-05-22 11:25:15 -04:00
Mike Gerwitz
9690663d1c
Added support for final classes
...
- This commit was originally many. Unfortunately, certain Git objects became
corrupt shortly after my 500th commit due to HDD issues. Due to the scope, I
was unable to recover the set of commits I needed (after an hour of trying
every method).
- Fortunately, vim's swap files came to the rescue. Had I been able to
properly shut down my PC, I would have been rather frustrated.
2011-05-22 11:19:51 -04:00
Mike Gerwitz
6e1d796092
Implemented constant properties
2011-05-19 19:48:51 -04:00
Mike Gerwitz
2d91a221aa
Const keyword now results in static property
2011-05-19 19:07:31 -04:00
Mike Gerwitz
030bdef821
Static keyword cannot be used with const for properties
2011-05-19 18:30:55 -04:00
Mike Gerwitz
f3c1d0f9af
Methods cannot be declared as constant
2011-05-19 07:54:51 -04:00
Mike Gerwitz
0c5293991c
Disallowed use of final keyword with properties
2011-05-18 20:51:02 -04:00
Mike Gerwitz
f47fcf4f46
Simplified and enhanced util.freeze()
2011-05-15 19:12:24 -04:00
Mike Gerwitz
4c74f2a1f2
Added final keyword for methods
2011-05-15 19:11:23 -04:00
Mike Gerwitz
775438c1b6
Implemented private static properties
2011-05-13 00:55:09 -04:00
Mike Gerwitz
9b20cdff48
Initial concept for protected static property access
2011-05-12 00:25:34 -04:00
Mike Gerwitz
9067bbf0cf
Static property accessor method is no longer enumerable
2011-05-11 20:53:43 -04:00
Mike Gerwitz
fa8d1bebe1
Implemented private static methods
2011-05-11 20:10:10 -04:00
Mike Gerwitz
a303adddea
Added tests to ensure that static method overrides are supported
2011-05-11 18:36:49 -04:00
Mike Gerwitz
9822894eae
Protected static methods are now inherited by subtypes
2011-05-11 17:56:48 -04:00
Mike Gerwitz
d542f9d803
Extendig concrete classes should no longer consume an instance id unnecessarily
...
- This is not tested because it would be testing too closely to the implementation
2011-05-10 23:35:43 -04:00
Mike Gerwitz
6325b0cf17
[Cleanup] Removed unused arguments from concrete ctor
2011-05-10 23:32:13 -04:00
Mike Gerwitz
91a47e4dcd
[Bug Fix] Concrete class constructor is no longer invoked on extend
...
- The ctor must be instantiated for use in the prototype chain
- This was working in the past, but apparently no test existed for it and
refactoring broke it
2011-05-10 23:32:13 -04:00