1
0
Fork 0
Commit Graph

525 Commits (016bb1362bd0be1e9a1e901186a3e2b8bd0ec72d)

Author SHA1 Message Date
Mike Gerwitz db84c6fc6e Added virtual and override restrictions to getters/setters 2011-12-22 23:36:12 -05:00
Mike Gerwitz 9942ac9743 const getters/setters are unsupported (simply omit the setter) 2011-12-22 22:48:17 -05:00
Mike Gerwitz 4ada84e3b7 Abstract getters/setters are not yet supported
- Perhaps in future versions. The implementation details will not be ironed out before v0.1.0 and we can easily add it in the future without breaking BC. Getters/setters have not had too much attention thusfar in ease.js due to testing with systems that must work across many environments, including pre-ES5.
2011-12-22 22:46:02 -05:00
Mike Gerwitz 6295b83ec7 util.clone() primitive fix (broken in recent commit)
- null is considered to be type "object" by instanceof
2011-12-22 09:37:34 -05:00
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
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
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 960be880ab Merge branch 'master' into visibility/master 2011-03-07 23:09:02 -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 df409c1e58 Property object now properly falls back in IE8 2011-03-07 09:05:05 -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 e05a65d5fa Initial concept of inheriting protected/private members 2011-03-07 00:14:43 -05:00
Mike Gerwitz f692ebcdfd Once again refactored propobj.setup(), removing unnecessary argument and separating into inheritance and non-inheritance methods 2011-03-07 00:10:12 -05:00
Mike Gerwitz d1be2d5351 Refactored propbj.setup() to be a bit more managable 2011-03-06 23:56:19 -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 df2943b5a1 Replaced __define[GS]etter__ with defineProperty for prop proxy 2011-03-06 22:16:50 -05:00
Mike Gerwitz 3651e31d20 Refactored property proxying into its own method 2011-03-06 21:48:18 -05:00
Mike Gerwitz e463d2c411 Began factoring property instance object out of class module 2011-03-06 18:19:19 -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 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 8749228764 interface() calls now push/pop rather than shift/unshift (performance) 2011-03-05 03:03:50 -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 bedc3c95af Moved named class argument check error to a more sensible location and amended error message 2011-03-04 23:44:19 -05:00
Mike Gerwitz 0ccdf07145 Implemented strict argument check for interface creation 2011-03-04 23:43:30 -05:00