MerlinVR / UdonSharp

An experimental compiler for compiling C# to Udon assembly
MIT License
678 stars 89 forks source link

User-defined UdonSharpBehaviour-dervied classes break the null-coalescing (??) operator #126

Open dustuuvr opened 3 years ago

dustuuvr commented 3 years ago

Attempting to reference an instance of a user-defined UdonSharpBehaviour-dervied class on the left-hand side of the null-coalescing (??) operator causes a U# compiler error.

Example problematic code:

private KaraokeUiBrowser _uiBrowser = null;
public KaraokeUiBrowser UiBrowser
{ get { return _uiBrowser ?? (_uiBrowser = GetComponentInParent<KaraokeUiBrowser>()); } }

(Where KaraokeUiBrowser is a user-defined subclass of UdonSharpBehaviour)

The above code causes the following error to be thrown upon compilation: System.ArgumentException: Cannot implicitly convert type 'KaraokeUiBrowser' to 'UdonBehaviour'

This problem appears to only be triggered when the UdonSharpBehaviour subclass is on the left-hand side of the ?? operator, the right-hand side appears to function as expected.

MerlinVR commented 3 years ago

Fixed in 1.0