From 4ada84e3b775ab247962a658028bef388c74eabe Mon Sep 17 00:00:00 2001 From: Mike Gerwitz Date: Thu, 22 Dec 2011 22:05:47 -0500 Subject: [PATCH] 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. --- lib/MemberBuilderValidator.js | 8 ++++++++ .../MemberBuilderValidator/GetterSetterTest.js | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/lib/MemberBuilderValidator.js b/lib/MemberBuilderValidator.js index bee57e4..c889952 100644 --- a/lib/MemberBuilderValidator.js +++ b/lib/MemberBuilderValidator.js @@ -283,6 +283,14 @@ exports.prototype.validateGetterSetter = function( ) ; + // abstract getters/setters are not yet supported + if ( keywords[ 'abstract' ] ) + { + throw TypeError( + "Cannot declare getter/setter '" + name + "' as abstract" + ); + } + if ( prev || prev_gs ) { // perform this check first, as it will make more sense than those that diff --git a/test/MemberBuilderValidator/GetterSetterTest.js b/test/MemberBuilderValidator/GetterSetterTest.js index 0cd9a15..c5ff29c 100644 --- a/test/MemberBuilderValidator/GetterSetterTest.js +++ b/test/MemberBuilderValidator/GetterSetterTest.js @@ -37,6 +37,13 @@ require( 'common' ).testCase( shared.quickFailureTest.apply( _self, arguments ); }; + this.quickKeywordTest = function( keywords, identifier, prev ) + { + shared.quickKeywordTest.call( this, + 'validateGetterSetter', keywords, identifier, prev + ); + }; + this.quickVisChangeTest = function( start, override, failtest, failstr ) { shared.quickVisChangeTest.call( _self, start, override, failtest, @@ -136,4 +143,15 @@ require( 'common' ).testCase( _self.quickVisChangeTest( cur[ 0 ], cur[ 1 ], true, 'conflict' ); } ); }, + + + /** + * Abstract getter/setters are not yet supported. They may be supported in + * the future. Disallowing them now will allow us to determine an + * implementation in the future without breaking BC. + */ + 'Cannot declare abstract getters/setters': function() + { + this.quickKeywordTest( [ 'abstract' ], 'abstract' ); + }, } );