Re: [fpc-pascal] Make a distinct pointer type

2023-05-31 Thread Sven Barth via fpc-pascal
Hairy Pixels via fpc-pascal  schrieb am
Do., 1. Juni 2023, 03:16:

>
>
> > On May 31, 2023, at 9:20 PM, Michael Van Canneyt via fpc-pascal <
> fpc-pascal@lists.freepascal.org> wrote:
> >
> > Type aliases are always assignment compatible.
>
> btw, what does the "type" prefix do then? I thought that made them
> non-aliases or distinct types.
>

It only makes a difference for the RTTI as well as overloading.

Regards,
Sven

>
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] Make a distinct pointer type

2023-05-31 Thread Hairy Pixels via fpc-pascal



> On May 31, 2023, at 9:20 PM, Michael Van Canneyt via fpc-pascal 
>  wrote:
> 
> Type aliases are always assignment compatible.

btw, what does the "type" prefix do then? I thought that made them non-aliases 
or distinct types.

Regards,
Ryan Joseph

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] Make a distinct pointer type

2023-05-31 Thread Hairy Pixels via fpc-pascal
I'm trying to make an "opaque pointer" type for a c library so the types are 
just pointers but they should be incompatible. I guess I'll have to make all 
the records.

> On May 31, 2023, at 9:20 PM, Michael Van Canneyt via fpc-pascal 
>  wrote:
> 
> Type aliases are always assignment compatible.
> 
> As far as I know, there is no way to do what you want with just 'pointer'.
> 
> This will give an error:
> 
> Type
>  RA = record end;
>  RB = record end;
>  PA = ^RA;
>  PB = ^RB;
> 

Regards,
Ryan Joseph

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] Make a distinct pointer type

2023-05-31 Thread Michael Van Canneyt via fpc-pascal




On Wed, 31 May 2023, Hairy Pixels via fpc-pascal wrote:


What's the best way to make a pointer type which is distinct so that the following 
snippet would give an error. I thought "type pointer" would do it but it 
doesn't seem to work.

type
 PA = type pointer;
 PB = type pointer;

var
 a: PA;
 b: PB;
begin
 a := b; // should give an error!
end;


Type aliases are always assignment compatible.

As far as I know, there is no way to do what you want with just 'pointer'.

This will give an error:

Type
  RA = record end;
  RB = record end;
  PA = ^RA;
  PB = ^RB;

var
  a: PA;
  b: PB;
begin
  a := b;
end.

Michael.
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


[fpc-pascal] Make a distinct pointer type

2023-05-31 Thread Hairy Pixels via fpc-pascal
What's the best way to make a pointer type which is distinct so that the 
following snippet would give an error. I thought "type pointer" would do it but 
it doesn't seem to work.

type
  PA = type pointer;
  PB = type pointer;

var
  a: PA;
  b: PB;
begin
  a := b; // should give an error!
end;

Regards,
Ryan Joseph

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal