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
Mike Gerwitz
3c774a7b16
Implemented protected static members within static methods
...
- Still not inheritence
2011-05-10 19:54:23 -04:00
Mike Gerwitz
a246dd67e0
Began adding protected static members (supported for instance methods)
...
- No inheritance support yet
2011-05-09 23:09:32 -04:00
Mike Gerwitz
c980a59273
Comment correction for static members
2011-04-14 20:28:42 -04:00
Mike Gerwitz
26cf32abe5
Enhanced static property setter to support setting to both undefined and null values
2011-04-13 23:53:03 -04:00
Mike Gerwitz
462671cfba
Can no longer set values of undeclared static properties
2011-04-13 23:45:26 -04:00
Mike Gerwitz
7e53df0e84
Static property setter now returns calling class
2011-04-13 23:35:54 -04:00
Mike Gerwitz
e3c526b89d
Writes to public static properties now work properly
2011-04-13 23:06:24 -04:00
Mike Gerwitz
44cd8db82d
Began implementing static property method (getter)
2011-04-13 22:38:05 -04:00
Mike Gerwitz
143348d390
propobj doSetup() param doc fix
2011-04-13 19:53:22 -04:00
Mike Gerwitz
63a4f95f65
Fix for overriding protected with protected
...
- A better solution may be explored
2011-04-13 14:48:20 -04:00
Mike Gerwitz
4a90b7b809
Public static properties references are now shared with subtypes
2011-04-10 22:32:46 -04:00
Mike Gerwitz
aead20290c
Inherited static members are no longer copied by reference
...
- Sharing values with supertype = bad
2011-04-05 23:47:44 -04:00
Mike Gerwitz
604e03fa55
util.clone() no longer falsely attempts to clone functions
2011-04-05 23:47:08 -04:00
Mike Gerwitz
4a0537223b
Added deep copy to util.copyTo()
2011-04-05 23:38:13 -04:00
Mike Gerwitz
fad503422e
Subtypes now inherit public static members from their supertype
2011-04-05 23:11:25 -04:00
Mike Gerwitz
a1ed610681
More efficient inheritance check for __initProps()'s __inst definition
2011-04-05 22:09:02 -04:00
Mike Gerwitz
7560d57619
Implemented __self for static access
2011-04-05 22:07:13 -04:00
Mike Gerwitz
af53fe81b4
Added support for public static getters/setters
2011-04-05 00:08:39 -04:00
Mike Gerwitz
4d0724b85d
Added util.copyTo()
2011-04-05 00:05:18 -04:00
Mike Gerwitz
e93a4db3e4
Began implementing public static members
2011-04-04 23:07:01 -04:00
Mike Gerwitz
7a2640eb5d
Removing unnecessary method reference (more post-refactor cleanup)
2011-04-04 22:42:09 -04:00
Mike Gerwitz
666d1df3fb
Removed unused var from class_builder
...
- 'properties' var no longer used after prior refactoring
2011-04-04 22:42:04 -04:00
Mike Gerwitz
dddd26761c
Current __self -> __inst; __self will be used in a different manner in following commits
2011-04-03 11:57:15 -04:00
Mike Gerwitz
1abf127ccc
Protected property values, when set by the parent, are now available to subtypes
2011-04-02 10:58:26 -04:00
Mike Gerwitz
0c48f00c74
Corrected documentation and default value for unless_exists in propobj's doSetup()
2011-04-02 10:31:39 -04:00
Mike Gerwitz
61f2f7e22d
Methods can now be properly overridden when visibility is escalated
2011-04-01 06:28:45 -04:00
Mike Gerwitz
170eb06af6
Only adding __self() for instance, not supertype init
2011-03-30 23:31:46 -04:00
Mike Gerwitz
6ade1c021f
Implemented GH#15 Access to public interface from within class instance
2011-03-30 00:55:27 -04:00
Mike Gerwitz
9d47e64ac3
Properties can no longer be declared as abstract
2011-03-29 23:48:17 -04:00
Mike Gerwitz
8a3010c964
Implemented GH#3 Abstract keyword cannot be used with private members
2011-03-29 23:39:49 -04:00
Mike Gerwitz
08771b2b97
Chose a more tolerable name to show in debuggers for class instances
2011-03-29 22:04:54 -04:00
Mike Gerwitz
5cb0b8355f
__super() method is now properly set on context
2011-03-29 22:02:42 -04:00
Mike Gerwitz
f43959640c
Moved attachId() to class_builder
2011-03-29 00:15:16 -04:00
Mike Gerwitz
55288f1e07
Moved attachAbstract() to class_builder
2011-03-29 00:08:49 -04:00
Mike Gerwitz
c8e2ebc4ea
Added toString() to forced-public methods list
2011-03-28 19:52:16 -04:00
Mike Gerwitz
bc8ec4e0be
Added tests for forced-public methods
2011-03-28 19:17:38 -04:00
Mike Gerwitz
52aab7fa54
reserved => reserved_members
2011-03-28 19:01:58 -04:00
Mike Gerwitz
2555a0db47
Added tests for reserved members
2011-03-28 18:58:23 -04:00
Mike Gerwitz
030b207f8f
Public-required members are now stored in a hash
2011-03-28 18:21:06 -04:00
Mike Gerwitz
8cd25b1bc4
Now storing reserved names in a hash
2011-03-28 18:18:40 -04:00
Mike Gerwitz
8ba68b31dc
Split concrete and abstract ctor generation into two separate functions
2011-03-27 23:16:19 -04:00
Mike Gerwitz
5bb0269280
Added test todo for class_builder
2011-03-27 23:09:17 -04:00
Mike Gerwitz
adfc607c8b
Continued moving class creation logic into class_builder module
...
- Again, very messy. Not yet complete.
2011-03-27 23:04:40 -04:00
Mike Gerwitz
87e7872f61
Using __dirname for modules rather than relative path
2011-03-27 02:02:04 -04:00
Mike Gerwitz
af8f0b1566
Began refactoring into class_builder module
...
- Sloppy thusfar. Baby steps.
2011-03-27 01:57:17 -04:00
Mike Gerwitz
30d10ff9d7
Constructor must now be public
2011-03-23 21:35:25 -04:00
Mike Gerwitz
2388d8f4d3
Typo caught my eye in comment
2011-03-23 21:03:19 -04:00
Mike Gerwitz
4d2852627e
All interface members must now be public
2011-03-19 00:58:42 -04:00
Mike Gerwitz
5af833ab05
Disallowing member redeclaration in same class definition
2011-03-19 00:48:02 -04:00
Mike Gerwitz
ce736bea55
Visibility de-escalation no longer permitted
2011-03-18 23:42:07 -04:00
Mike Gerwitz
9b9bcfd150
Apparently methodOverride callback isn't used anymore in this context. Forgot to remove.
2011-03-16 23:32:48 -04:00
Mike Gerwitz
36ae6bcd81
Now throwing expection if more than two arguments are passed to extend() when implementing
2011-03-16 19:50:47 -04:00
Mike Gerwitz
14cac6b461
Can now specify parent class in extend() when implementing atop an empty base
2011-03-16 19:24:02 -04:00
Mike Gerwitz
80f3ec6b68
Preventing base specification via extend() when implementing off of an existing base class
2011-03-16 19:06:16 -04:00
Mike Gerwitz
58cb196213
Extending class while using temporary name object is now permitted
2011-03-16 18:18:33 -04:00
Mike Gerwitz
dde4fb99d3
Corrected error language for invoking class module
2011-03-16 17:50:11 -04:00
Mike Gerwitz
5fe08a18ac
Corrected argument documentation
2011-03-15 00:17:02 -04:00
Mike Gerwitz
b2161d1822
Now storing visibility data in class instance (so GC can clear it)
2011-03-14 23:49:11 -04:00
Mike Gerwitz
66758500e6
Class metadata is now stored in class object (first step in working with GC)
2011-03-14 23:43:56 -04:00
Mike Gerwitz
7b766c1b14
Altered toString() defaults to be more consistent with v8
2011-03-14 18:16:53 -04:00
Mike Gerwitz
d05652f880
Fixed visibility issues in IE6
...
- Wasn't properly falling back
2011-03-13 21:47:40 -04:00
Mike Gerwitz
984a14b087
Added more detailed documentation regarding the class_instance object
2011-03-13 14:51:40 -04:00
Mike Gerwitz
e03c081cfd
Fixed bug that made private members of a supertype inaccessible to methods that have not been overridden by a subtype
...
- In doing so, abandoned the super identifier (sid) for a more elegant solution with class ids (cid's)
- This permits fast and easy private member swapping via getMethodInstance() in class.js
2011-03-13 04:51:00 -04:00
Mike Gerwitz
e4e8900a9f
Storing each supertype's private members in a separate object to prepare for future change
...
- sid = super identifier
2011-03-13 03:55:43 -04:00
Mike Gerwitz
6b374902ae
Separated private members into a separate object (propobj) to prepare for future modifications
...
- This incurs a performance hit for accessing protected members, and even further for public, internally
- But speeds up access to private members, likely due to there being less members
2011-03-12 23:48:38 -05:00
Mike Gerwitz
e0fb37daa0
Overridden methods now property return instance when returning 'this'
...
- There may be a cleaner way to do this. This is a quick fix.
2011-03-10 12:40:55 -05:00