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:
Stefan Urbanek 2002-06-07 22:13:51 +00:00
parent 600de3ee1e
commit 435a142639
10 changed files with 97 additions and 32 deletions

View file

@ -1,3 +1,4 @@
New
Ignore
.snap-ignore
Extensions

View file

@ -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

View file

@ -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"]];

View file

@ -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

View file

@ -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
View file

@ -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

View file

@ -16,10 +16,18 @@
Classes =
{
All = {
};
NSObject = {
Use = ("NSObject-operators");
};
NSProxy = {
Use = (KeyValueCoding);
};
NSArray = {
Super = "NSObject";
SymbolicSelectors = {

View file

@ -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];

View file

@ -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
View file

@ -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