Browse Source

ScopeVar / ExpressionNode deprecate #isImmutable.

Herby Vojčík 4 years ago
parent
commit
8361bd4b81

+ 2 - 0
lang/API-CHANGES.txt

@@ -3,6 +3,8 @@
 * Deprecate Behavior >> javascriptConstructor(:)
 * Deprecate IRInstruction >> needsBoxingAsReceiver
 * Deprecate VariableNode >> value(:)
+* Deprecate #isImmutable in AST nodes and scope vars
+  * Split into #isIdempotent / #isAssignable.
 * UnknownVar => ExternallyKnownVar
 * Added Teachable class.
 

+ 14 - 30
lang/src/Compiler-AST.js

@@ -428,15 +428,21 @@ selector: "isImmutable",
 protocol: "testing",
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "isImmutable\x0a\x09^ false",
+source: "isImmutable\x0a\x09self deprecatedAPI: 'Use #isIdempotent instead.'.\x0a\x09^ self isIdempotent",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: []
+messageSends: ["deprecatedAPI:", "isIdempotent"]
 }, function ($methodClass){ return function (){
 var self=this,$self=this;
-return false;
-
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+$self._deprecatedAPI_("Use #isIdempotent instead.");
+return $self._isIdempotent();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"isImmutable",{})});
+//>>excludeEnd("ctx");
 }; }),
 $globals.ExpressionNode);
 
@@ -1368,29 +1374,6 @@ return $recv($self._value())._isImmutable();
 }; }),
 $globals.ValueNode);
 
-$core.addMethod(
-$core.method({
-selector: "isImmutable",
-protocol: "testing",
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "isImmutable\x0a\x09^ self value isImmutable",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: ["isImmutable", "value"]
-}, function ($methodClass){ return function (){
-var self=this,$self=this;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx1) {
-//>>excludeEnd("ctx");
-return $recv($self._value())._isImmutable();
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"isImmutable",{})});
-//>>excludeEnd("ctx");
-}; }),
-$globals.ValueNode);
-
 $core.addMethod(
 $core.method({
 selector: "value",
@@ -1654,17 +1637,18 @@ selector: "isImmutable",
 protocol: "testing",
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "isImmutable\x0a\x09^ self binding isImmutable",
+source: "isImmutable\x0a\x09self deprecatedAPI: 'Use #isIdempotent / #isAssignable not instead.'.\x0a\x09^ self isIdempotent \x22to be consistent with super\x22",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["isImmutable", "binding"]
+messageSends: ["deprecatedAPI:", "isIdempotent"]
 }, function ($methodClass){ return function (){
 var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-return $recv($self._binding())._isImmutable();
+$self._deprecatedAPI_("Use #isIdempotent / #isAssignable not instead.");
+return $self._isIdempotent();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"isImmutable",{})});
 //>>excludeEnd("ctx");

+ 4 - 6
lang/src/Compiler-AST.st

@@ -125,7 +125,8 @@ isIdempotent
 !
 
 isImmutable
-	^ false
+	self deprecatedAPI: 'Use #isIdempotent instead.'.
+	^ self isIdempotent
 !
 
 isSuper
@@ -348,10 +349,6 @@ value: anObject
 
 isIdempotent
 	^ self value isImmutable
-!
-
-isImmutable
-	^ self value isImmutable
 ! !
 
 !ValueNode methodsFor: 'visiting'!
@@ -421,7 +418,8 @@ isIdempotent
 !
 
 isImmutable
-	^ self binding isImmutable
+	self deprecatedAPI: 'Use #isIdempotent / #isAssignable not instead.'.
+	^ self isIdempotent "to be consistent with super"
 !
 
 isNavigationNode

+ 10 - 94
lang/src/Compiler-Semantic.js

@@ -1146,15 +1146,21 @@ selector: "isImmutable",
 protocol: "testing",
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "isImmutable\x0a\x09^ false",
+source: "isImmutable\x0a\x09self deprecatedAPI: 'Use #isIdempotent / #isAssignable not instead.'.\x0a\x09^ self isIdempotent",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: []
+messageSends: ["deprecatedAPI:", "isIdempotent"]
 }, function ($methodClass){ return function (){
 var self=this,$self=this;
-return false;
-
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+$self._deprecatedAPI_("Use #isIdempotent / #isAssignable not instead.");
+return $self._isIdempotent();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"isImmutable",{})});
+//>>excludeEnd("ctx");
 }; }),
 $globals.ScopeVar);
 
@@ -1378,24 +1384,6 @@ return true;
 }; }),
 $globals.AliasVar);
 
-$core.addMethod(
-$core.method({
-selector: "isImmutable",
-protocol: "testing",
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "isImmutable\x0a\x09^ true",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: []
-}, function ($methodClass){ return function (){
-var self=this,$self=this;
-return true;
-
-}; }),
-$globals.AliasVar);
-
 
 
 $core.addClass("ArgVar", $globals.ScopeVar, [], "Compiler-Semantic");
@@ -1438,24 +1426,6 @@ return true;
 }; }),
 $globals.ArgVar);
 
-$core.addMethod(
-$core.method({
-selector: "isImmutable",
-protocol: "testing",
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "isImmutable\x0a\x09^ true",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: []
-}, function ($methodClass){ return function (){
-var self=this,$self=this;
-return true;
-
-}; }),
-$globals.ArgVar);
-
 
 
 $core.addClass("ClassRefVar", $globals.ScopeVar, [], "Compiler-Semantic");
@@ -1521,24 +1491,6 @@ return true;
 }; }),
 $globals.ClassRefVar);
 
-$core.addMethod(
-$core.method({
-selector: "isImmutable",
-protocol: "testing",
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "isImmutable\x0a\x09^ true",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: []
-}, function ($methodClass){ return function (){
-var self=this,$self=this;
-return true;
-
-}; }),
-$globals.ClassRefVar);
-
 
 
 $core.addClass("ExternallyKnownVar", $globals.ScopeVar, [], "Compiler-Semantic");
@@ -1581,24 +1533,6 @@ return true;
 }; }),
 $globals.ExternallyKnownVar);
 
-$core.addMethod(
-$core.method({
-selector: "isImmutable",
-protocol: "testing",
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "isImmutable\x0a\x09^ true",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: []
-}, function ($methodClass){ return function (){
-var self=this,$self=this;
-return true;
-
-}; }),
-$globals.ExternallyKnownVar);
-
 
 
 $core.addClass("InstanceVar", $globals.ScopeVar, [], "Compiler-Semantic");
@@ -1711,24 +1645,6 @@ return true;
 }; }),
 $globals.PseudoVar);
 
-$core.addMethod(
-$core.method({
-selector: "isImmutable",
-protocol: "testing",
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "isImmutable\x0a\x09^ true",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: []
-}, function ($methodClass){ return function (){
-var self=this,$self=this;
-return true;
-
-}; }),
-$globals.PseudoVar);
-
 $core.addMethod(
 $core.method({
 selector: "isPseudoVar",

+ 2 - 21
lang/src/Compiler-Semantic.st

@@ -250,7 +250,8 @@ isIdempotent
 !
 
 isImmutable
-	^ false
+	self deprecatedAPI: 'Use #isIdempotent / #isAssignable not instead.'.
+	^ self isIdempotent
 !
 
 isInstanceVar
@@ -291,10 +292,6 @@ isAssignable
 
 isIdempotent
 	^ true
-!
-
-isImmutable
-	^ true
 ! !
 
 ScopeVar subclass: #ArgVar
@@ -311,10 +308,6 @@ isAssignable
 
 isIdempotent
 	^ true
-!
-
-isImmutable
-	^ true
 ! !
 
 ScopeVar subclass: #ClassRefVar
@@ -337,10 +330,6 @@ isAssignable
 
 isClassRefVar
 	^ true
-!
-
-isImmutable
-	^ true
 ! !
 
 ScopeVar subclass: #ExternallyKnownVar
@@ -357,10 +346,6 @@ isAssignable
 
 isExternallyKnownVar
 	^ true
-!
-
-isImmutable
-	^ true
 ! !
 
 ScopeVar subclass: #InstanceVar
@@ -403,10 +388,6 @@ isIdempotent
 	^ true
 !
 
-isImmutable
-	^ true
-!
-
 isPseudoVar
 	^ true
 ! !