1
0
Fork 0
Commit Graph

267 Commits (7f24d094ba12fe7005ace8f8c80fc7e95a7632eb)

Author SHA1 Message Date
Mike Gerwitz ea0d18d8eb Added regression test to ensure 'this' is bound to the class definition rather than instance within static methods 2011-04-05 19:52:49 -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 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 61f2f7e22d Methods can now be properly overridden when visibility is escalated 2011-04-01 06:28:45 -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 b8e512c69e Formatted prop_parser tests 2011-03-29 23:28:45 -04:00
Mike Gerwitz 5cb0b8355f __super() method is now properly set on context 2011-03-29 22:02:42 -04:00
Mike Gerwitz bc8ec4e0be Added tests for forced-public methods 2011-03-28 19:17:38 -04:00
Mike Gerwitz 2555a0db47 Added tests for reserved members 2011-03-28 18:58:23 -04:00
Mike Gerwitz 30d10ff9d7 Constructor must now be public 2011-03-23 21:35:25 -04:00
Mike Gerwitz fba584171c Placed test targets in their own Makefile to faciliate using tests as prerequisites for ease-full.js, ensuring it'll be rebuilt on test modification 2011-03-20 02:28:40 -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 7070e55254 Added test to ensure same visibility de-escalation rules apply to concrete implementations of Interface methods 2011-03-18 23:55:56 -04:00
Mike Gerwitz 10ef0b2139 Added test to ensure __super() works properly with protected method overrides 2011-03-18 23:49:28 -04:00
Mike Gerwitz ce736bea55 Visibility de-escalation no longer permitted 2011-03-18 23:42:07 -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 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 9a135a064c Added pre-ES5 test to ensure we can catch fallback bugs quickly between browser tests (preferably, before even committing) 2011-03-13 22:08:08 -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 e1bb48a8d9 Added visibility test to ensure supertypes do not have access to private members of subtypes when invoked 2011-03-13 15:39:14 -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 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 05e249def4 Added result explanations to method invocation performance tests 2011-03-11 19:27:07 -05:00
Mike Gerwitz 5a420fae4e Added perf tests for invoking class methods 2011-03-11 19:20:05 -05:00
Mike Gerwitz d2aa24ef66 Added performance tests for setting properties, internally and externally 2011-03-11 19:16:52 -05:00
Mike Gerwitz 311e39d67c Added performance test for reading properties, internal and external 2011-03-11 19:14:10 -05:00
Mike Gerwitz a8767a1da0 Added property/method class definition performance tests 2011-03-10 23:32:33 -05:00
Mike Gerwitz cdc88bea4c Added count to perf output to calculate individual cost 2011-03-10 23:07:52 -05:00
Mike Gerwitz 37bf2fa353 Began adding performance tests 2011-03-10 22:43:36 -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
Mike Gerwitz 84363aca45 Added test to ensure correct instance is returned when returning 'this' from a parent method 2011-03-10 12:24:59 -05:00
Mike Gerwitz 7427958ec0 Returning 'this' from a method will now return the object instance, not the internal property object 2011-03-10 12:19:39 -05:00
Mike Gerwitz 354061cd5f Continuing to use BASH for now for rmtrail test 2011-03-07 23:16:14 -05:00
Mike Gerwitz 960be880ab Merge branch 'master' into visibility/master 2011-03-07 23:09:02 -05:00
Mike Gerwitz ab8faad53f /bin/{bash => sh} to support system with only sh installed
- e.g. FreeBSD
- Nothing in the scripts actually needs BASH anyway
2011-03-07 22:54:59 -05:00
Mike Gerwitz 841b5ac5a5 Replaed all __{define,lookup}[GS]etter__'s with defineProperty/getOwnPropertyDescriptor 2011-03-07 22:44:47 -05:00
Mike Gerwitz 00378da630 Merge branch 'master' into visibility/master 2011-03-07 09:03:34 -05:00
Mike Gerwitz fbc58384b4 Provided a more accurate mechanism for detecting Object.defineProperty (tests in IE8 fixed) 2011-03-07 09:03:03 -05:00
Mike Gerwitz 4e2f174667 Added test for good measure to ensure class instances do not share protected member values 2011-03-07 00:19:56 -05:00
Mike Gerwitz e05a65d5fa Initial concept of inheriting protected/private members 2011-03-07 00:14:43 -05:00
Mike Gerwitz 30bfde50cd Tada! Private members. 2011-03-06 23:03:39 -05:00
Mike Gerwitz c1765cd720 Using visibility fallback for browsers that do not support getters/setters 2011-03-06 22:43:14 -05:00
Mike Gerwitz 5d8fdc5204 Merge branch 'master' into visibility/master
Conflicts:
	lib/class.js
2011-03-06 12:39:26 -05:00
Mike Gerwitz 517b2be464 Fix toString() override for IE
- All tests once again pass on IE6
2011-03-06 12:38:31 -05:00
Mike Gerwitz a1c1ddff74 IE6 was blowing up on getter/setter test 2011-03-06 10:56:31 -05:00
Mike Gerwitz 4eda438f14 Outputting current test for browser
- Output is hidden on success, but useful on failure
2011-03-06 10:55:13 -05:00
Mike Gerwitz 6b79999adb IE6 Error.prototype.toString() !== Error.message 2011-03-06 10:37:20 -05:00
Mike Gerwitz 0ccab4f8d9 Corrected test combine process; was not including tests in ease-full.js 2011-03-06 10:15:32 -05:00
Mike Gerwitz c0f351d173 Merge branch 'master' into visibility/master 2011-03-05 23:12:55 -05:00
Mike Gerwitz d6cca75093 Can now override toString() method of a class 2011-03-05 23:11:13 -05:00
Mike Gerwitz b321610cc7 Interface name included in instantiation error, if available 2011-03-05 21:46:44 -05:00
Mike Gerwitz 6f7dabe35e Interface name is included in declaration errors, if available 2011-03-05 17:27:02 -05:00
Mike Gerwitz 2967cc7a9a Class name is now provided in all errors where name is available, within class module 2011-03-05 13:13:53 -05:00
Mike Gerwitz da8be9affa Interface definition errors now contain class name when available 2011-03-05 12:57:21 -05:00
Mike Gerwitz 5f739e604b Class name is included in definition errors when available 2011-03-05 12:56:14 -05:00
Mike Gerwitz 635395b303 Merge branch 'master' into visibility/master 2011-03-05 03:23:11 -05:00
Mike Gerwitz 2c2701f4ab Implemented staging-style named class definition when implementing interfaces 2011-03-05 03:22:45 -05:00
Mike Gerwitz 0f9454b79b interface() no longer returns a usable class
- Number of reasons. First and foremost, it doesn't make sense to return a usable class with no body/definition
- Secondly, to make the following commit(s) possible and consistent
2011-03-05 02:59:21 -05:00
Mike Gerwitz ace9f4c1ea Began implementing class name staging (implement() does not yet work with it) 2011-03-05 00:33:47 -05:00
Mike Gerwitz 0ccdf07145 Implemented strict argument check for interface creation 2011-03-04 23:43:30 -05:00
Mike Gerwitz b158e542d5 Declaring named class will throw error for extreaneous arguments 2011-03-04 16:36:15 -05:00
Mike Gerwitz dca7653adf Merge branch 'master' into visibility/master 2011-03-04 00:26:02 -05:00
Mike Gerwitz 009c4a93e9 Interfaces now have sane/useful values when converted to strings 2011-03-04 00:19:02 -05:00
Mike Gerwitz 85e687e29c Added Interface.isInterface() 2011-03-03 23:59:37 -05:00
Mike Gerwitz 4148f8742d Merge branch 'master' into visibility/master
Conflicts:
	test/test-class-extend.js
2011-03-03 23:29:20 -05:00
Mike Gerwitz 81d03cb984 Altered class toString() representations to be more consistent with JS 2011-03-03 23:00:59 -05:00
Mike Gerwitz e2cba458d8 Class instances now have different default toString() implementations than uninstantiated classes
- Instance id is not yet included, as that is currently in a different branch
2011-03-03 22:53:20 -05:00
Mike Gerwitz 840a495017 Began implementing named classes
- toString() implementation
2011-03-03 22:33:18 -05:00
Mike Gerwitz d23ae6210c Initial implementation of natural class definition by invoking class module 2011-03-03 19:43:20 -05:00
Mike Gerwitz 3f915d3644 The interface module may now be invoked, providing a more natural looking means of declaring interfaces 2011-03-03 19:08:24 -05:00
Mike Gerwitz bc9e2bb7b2 Fix setting public properties
- This currently only works with ES5 engines
  - Fallback to follow so this will work with pre-ES5 engines
- As such, I do not recommend using this commit outside of ES5-compliant engines that work properly with getters/setters
  - This does NOT include IE8, as IE8 only works with getters/setters on DOM elements
2011-03-02 23:21:10 -05:00
Mike Gerwitz 74c2fc57c1 Initial implementation of protected members
- This was quite the pain in the ass
- There are additional considerations. I DO NOT recommend using this commit. Check out a later commit.
2011-03-02 20:43:24 -05:00
Mike Gerwitz 2af7bcf45d Merge branch 'master' into visibility/master 2011-03-02 07:54:52 -05:00
Mike Gerwitz d74c01b562 Removed visibility dependency from test-class-abstract 2011-03-02 07:53:58 -05:00
Mike Gerwitz 40228361a1 test-class-parent no longer relies on member visibility to succeed
- This is important for pending changes
2011-03-02 07:51:18 -05:00
Mike Gerwitz e239352fc0 Resolved bug that was causing the system to think that Object prototype members were part of the abstract member list when attempting to define a method with the same name 2011-03-01 12:11:36 -05:00
Mike Gerwitz 02d0c07f98 Extended existing visibility tests to include methods 2011-01-27 22:39:52 -05:00
Mike Gerwitz 38c16048cb Began adding protected/private member support
- No longer adding ANY properties to prototype
- protected/private members no longer part of the public access level
2011-01-27 22:35:40 -05:00
Mike Gerwitz 881edc0cc6 Preparing to remove abstractMethods from public prototype; now uses hash for performance since it no longer needs to be referenced cleanly externally
- It will be later referenced via reflection
2011-01-25 00:13:47 -05:00
Mike Gerwitz 188ad2f4eb Getters/setters are not supported within interface definitions 2011-01-24 23:56:54 -05:00
Mike Gerwitz c7b262b271 Concrete methods cannot be overridden by abstract methods 2011-01-24 23:52:06 -05:00
Mike Gerwitz 37e5b1d94d util.propCopy() no longer needed 2011-01-24 23:38:27 -05:00
Mike Gerwitz 2a54662716 Added getter/setter keywords to propParse 2011-01-24 23:27:55 -05:00
Mike Gerwitz 96d2f74dae Method builder wraps overrides in an override function 2011-01-21 23:16:20 -05:00
Mike Gerwitz e03d5861bb Overridden methods must have >= length parameter lists 2011-01-21 22:19:22 -05:00
Mike Gerwitz b8a6aa2af6 Method builder does not permit overriding properties with methods 2011-01-21 21:53:31 -05:00
Mike Gerwitz 12e5b48a7d Cannot override method with property 2011-01-21 21:43:18 -05:00
Mike Gerwitz dea6972416 Began adding basic method builder (currently operates the same as property builder)
- They are essentially the same, but the method builder will have additional logic (e.g. method overriding) and support different keywords
2011-01-21 20:54:55 -05:00
Mike Gerwitz 906e468cdf Refactored test logic that will be shared between multiple members into inc-member_builder-common.js to reduce code duplication 2011-01-21 20:46:24 -05:00
Mike Gerwitz 2205af8c07 Can initialize member object with existing objects for each level of visibility 2011-01-20 23:56:39 -05:00