Raised This Month: $ Target: $400
 0% 

Syntax Update: Removals


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
databomb
Veteran Member
Join Date: Jun 2009
Location: california
Old 08-22-2015 , 00:14   Re: Syntax Update: Removals
Reply With Quote #1

Quote:
Originally Posted by BAILOPAN View Post
Neutering __nullable__

For such an important piece of future type system sanity, this one was a pretty bad leak. It was undocumented but that didn't stop people from creating alternate nullable systems that violated its intended semantics. __nullable__ will still allow using new with custom constructors, but it won't allow comparing to null.
How would this change the syntax of the constructors in an example like https://github.com/VoiDeD/sourcemod-...tional-helpers ? There might be some lingering violations of a null comparison in entity.inc but keeping __nullable__ on the CBaseEntity methodmap seems to prevent an instantiation of a child object like
CBasePlayer player = new CBasePlayer( client );

edit: in case this is a bug and not just another syntactic miss on my part,

if I modify https://github.com/alliedmodders/sou...e-methodmap.sp to

PHP Code:
native void printnum(int num);

methodmap Crab __nullable__
{
    public 
Crab() {
        return 
view_as<Crab>(2);
    }
};

methodmap King Crab
{
    public 
King() {
        return 
view_as<King>(new Crab());
    }
};

methodmap Layer3 King
{
    public 
Layer3() {
        return 
view_as<Layer3>(new King());
    }
}

public 
main()
{
    
Crab egg = new Crab();
    
printnum(_:egg);
    
    
King baby = new King();
    
printnum(_:baby);
    
    
Layer3 stuff = new Layer3();
    
printnum(_:stuff);

it produces:
//// test-nullable.sp
//
// test-nullable.sp(29) : error 171: cannot use 'new' with non-object-like methodmap 'King'
// test-nullable.sp(29) : warning 213: tag mismatch
// test-nullable.sp(32) : error 171: cannot use 'new' with non-object-like methodmap 'Layer3'
// test-nullable.sp(32) : warning 213: tag mismatch
//
__________________

Last edited by databomb; 08-22-2015 at 12:11.
databomb is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 01:04.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode