mirror of
https://github.com/gnustep/libs-steptalk.git
synced 2025-02-19 09:50:43 +00:00
Some fixes for DO
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@13796 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
600de3ee1e
commit
435a142639
10 changed files with 97 additions and 32 deletions
|
@ -1,3 +1,4 @@
|
|||
New
|
||||
Ignore
|
||||
.snap-ignore
|
||||
Extensions
|
||||
|
|
|
@ -1,10 +1,17 @@
|
|||
2002 Jun 7
|
||||
|
||||
* STEnvironmentDescription: added abstract class 'All' that is root
|
||||
class for all classes
|
||||
* Foundation-operators.stenv: add symbolic selector '->' to all classes
|
||||
|
||||
2002 Jun 6
|
||||
|
||||
* Added symbolic selector '->' for valueForKeyPath:
|
||||
* StepTalk.stenv: allow whileTrue: and whileFalse: in STBlock
|
||||
* NSObject+additions: moved from Smalltalk; added -isSame: method
|
||||
* DistributedFinder: prevent NSDictionary log when there is no file for
|
||||
teh requested object; changed NSLogs to NSDebugLLogs with 'STFinder'
|
||||
a requested object; changed NSLogs to NSDebugLLogs with 'STFinder'; do not
|
||||
try to launch nil tool
|
||||
|
||||
2002 Jun 4
|
||||
|
||||
|
|
|
@ -113,7 +113,14 @@ static NSDictionary *STDOInfo(NSString *name)
|
|||
return obj;
|
||||
}
|
||||
|
||||
|
||||
if(!toolName || [toolName isEqualToString:@""])
|
||||
{
|
||||
return nil;
|
||||
}
|
||||
|
||||
NSDebugLLog(@"STFinder", @"Launching '%@'", toolName);
|
||||
|
||||
task = [NSTask launchedTaskWithLaunchPath:toolName
|
||||
arguments:[dict objectForKey:@"Arguments"]];
|
||||
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2002 Jun 7
|
||||
|
||||
* STBytecodeInterpreter: fixed debug-log bug
|
||||
|
||||
2002 Jun 6
|
||||
|
||||
* STSourceReader: fixed bug in reading number token type and binary
|
||||
|
|
|
@ -442,10 +442,10 @@ static id (*popImp)(id obj, SEL sel);
|
|||
selector = [self literalAtIndex:selIndex];
|
||||
|
||||
NSDebugLLog(@"STSending",
|
||||
@" %s receiver:%@ (%s) selector:%@",
|
||||
@" %s receiver:%@ (%@) selector:%@",
|
||||
[receiver isProxy] ? "proxy for" : "",
|
||||
target,
|
||||
[target name],
|
||||
NSStringFromClass([target class]),
|
||||
selector);
|
||||
|
||||
selector = [environment translateSelector:selector forReceiver:target];
|
||||
|
|
8
NEWS
8
NEWS
|
@ -1,3 +1,11 @@
|
|||
0.5.3
|
||||
|
||||
* StepTalk defaults changed
|
||||
* Some source documentation added
|
||||
* New example tool stshell - the StepTalk shell
|
||||
* Added DistributedObject finder
|
||||
* Bugfixes in Smalltalk language
|
||||
|
||||
0.5.2
|
||||
|
||||
* Separated AppTalk
|
||||
|
|
|
@ -16,10 +16,18 @@
|
|||
|
||||
Classes =
|
||||
{
|
||||
All = {
|
||||
|
||||
};
|
||||
|
||||
NSObject = {
|
||||
Use = ("NSObject-operators");
|
||||
};
|
||||
|
||||
NSProxy = {
|
||||
Use = (KeyValueCoding);
|
||||
};
|
||||
|
||||
NSArray = {
|
||||
Super = "NSObject";
|
||||
SymbolicSelectors = {
|
||||
|
|
|
@ -329,79 +329,94 @@
|
|||
/* FIXME: rewrite */
|
||||
- (STClassInfo *)findClassInfoForObject:(id)anObject
|
||||
{
|
||||
NSString *origName;
|
||||
NSString *name;
|
||||
STClassInfo *info = nil;
|
||||
Class class;
|
||||
NSString *className;
|
||||
NSString *origName;
|
||||
Class *class;
|
||||
|
||||
if(!anObject)
|
||||
{
|
||||
anObject = STNil;
|
||||
}
|
||||
|
||||
/* FIXME: temporary solution */
|
||||
if( [anObject isProxy] )
|
||||
{
|
||||
NSDebugLog(@"FIXME: receiver is a distant object");
|
||||
return nil;
|
||||
info = [classes objectForKey:@"NSProxy"];
|
||||
|
||||
if(!info)
|
||||
{
|
||||
return [classes objectForKey:@"All"];
|
||||
}
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
class = [anObject classForScripting];
|
||||
|
||||
if([anObject respondsToSelector:@selector(classForScripting)])
|
||||
{
|
||||
class = [anObject classForScripting];
|
||||
}
|
||||
else
|
||||
{
|
||||
class = [anObject class];
|
||||
}
|
||||
|
||||
className = [anObject className];
|
||||
|
||||
if([anObject isClass])
|
||||
{
|
||||
origName = name = [[class className]
|
||||
stringByAppendingString:@" class"];
|
||||
origName = className = [className stringByAppendingString:@" class"];
|
||||
|
||||
NSDebugLLog(@"STSending",
|
||||
@"Looking for class info '%@'...",
|
||||
name);
|
||||
className);
|
||||
|
||||
info = [infoCache objectForKey:name];
|
||||
info = [infoCache objectForKey:className];
|
||||
|
||||
if(info)
|
||||
{
|
||||
return info;
|
||||
}
|
||||
|
||||
while( !(info = [classes objectForKey:name]) )
|
||||
while( !(info = [classes objectForKey:className]) )
|
||||
{
|
||||
class = [[class superclass] classForScripting];
|
||||
class = [class superclass];
|
||||
|
||||
if(!class)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
name = [[class className]
|
||||
stringByAppendingString:@" class"];
|
||||
className = [[class className] stringByAppendingString:@" class"];
|
||||
NSDebugLLog(@"STSending",
|
||||
@" ... %@?",name);
|
||||
@" ... %@?",className);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
origName = name = [class className];
|
||||
origName = className;
|
||||
|
||||
NSDebugLLog(@"STSending",
|
||||
@"Looking for class info '%@' (instance)...",
|
||||
name);
|
||||
className);
|
||||
|
||||
info = [infoCache objectForKey:name];
|
||||
info = [infoCache objectForKey:className];
|
||||
if(info)
|
||||
{
|
||||
return info;
|
||||
}
|
||||
|
||||
while( !(info = [classes objectForKey:name]) )
|
||||
while( !(info = [classes objectForKey:className]) )
|
||||
{
|
||||
class = [[class superclass] classForScripting];
|
||||
class = [class superclass];
|
||||
if(!class)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
name = [class className];
|
||||
className = [class className];
|
||||
NSDebugLLog(@"STSending",
|
||||
@" ... %@?",name);
|
||||
@" ... %@?",className);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -409,13 +424,13 @@
|
|||
{
|
||||
NSDebugLLog(@"STSending",
|
||||
@"No class info '%@'",
|
||||
name);
|
||||
className);
|
||||
return nil;
|
||||
}
|
||||
|
||||
NSDebugLLog(@"STSending",
|
||||
@"Found class info '%@'",
|
||||
name);
|
||||
className);
|
||||
|
||||
[infoCache setObject:info forKey:origName];
|
||||
return info;
|
||||
|
@ -426,12 +441,14 @@
|
|||
STClassInfo *class;
|
||||
NSString *selector;
|
||||
|
||||
#if 0
|
||||
if( [anObject isProxy] )
|
||||
{
|
||||
NSDebugLog(@"Warning: receiver is a distant object (FIXME)");
|
||||
|
||||
return aString;
|
||||
}
|
||||
#endif
|
||||
|
||||
class = [self findClassInfoForObject:anObject];
|
||||
|
||||
|
|
|
@ -428,14 +428,26 @@ static NSDictionary *dictForDescriptionWithName(NSString *defName)
|
|||
|
||||
while( (class = [enumerator nextObject]) )
|
||||
{
|
||||
className = [class superclassName];
|
||||
|
||||
if( (className == nil) || [className isEqualToString:@"nil"] )
|
||||
if([[class behaviourName] isEqualToString:@"All"])
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
superclass = [classes objectForKey:className];
|
||||
className = [class superclassName];
|
||||
|
||||
if( (className == nil) || [className isEqualToString:@"nil"] )
|
||||
{
|
||||
superclass = [classes objectForKey:@"All"];
|
||||
|
||||
if(!superclass)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
superclass = [classes objectForKey:className];
|
||||
}
|
||||
|
||||
if(!superclass)
|
||||
{
|
||||
|
|
1
TODO
1
TODO
|
@ -1,3 +1,4 @@
|
|||
TODO list
|
||||
|
||||
1 handle 'connection did die' notification for distant objects in STEnvironment
|
||||
2 fix class-info lookup for proxies in STEnvironment
|
||||
|
|
Loading…
Reference in a new issue