public void HandleGenericAccess(List <System.Type> genericTypeArgs) { if (captureFunc == InternalFunc.TypeIDInstance) { captureFunc = InternalFunc.TypeIDGeneric; } else if (captureFunc == InternalFunc.TypeNameInstance) { captureFunc = InternalFunc.TypeNameGeneric; } else { throw new System.ArgumentException($"Cannot call generic internal function {captureFunc}"); } genericType = genericTypeArgs.First(); }
public bool ResolveAccessToken(string accessToken) { if (captureScope.captureArchetype == ExpressionCaptureArchetype.Type) { return(false); #if false if (captureScope.captureType != typeof(UdonSharpUtility)) { return(false); } switch (accessToken) { case nameof(UdonSharpUtility.GetCompilerMajorVersion): captureFunc = InternalFunc.MajorVersion; break; case nameof(UdonSharpUtility.GetCompilerMinorVersion): captureFunc = InternalFunc.MinorVersion; break; case nameof(UdonSharpUtility.GetCompilerPatchVersion): captureFunc = InternalFunc.PatchVersion; break; case nameof(UdonSharpUtility.GetCompilerBuild): captureFunc = InternalFunc.Build; break; case nameof(UdonSharpUtility.GetCompilerVersionString): captureFunc = InternalFunc.VersionStr; break; case nameof(UdonSharpUtility.GetTypeID): captureFunc = InternalFunc.TypeIDGeneric; break; case nameof(UdonSharpUtility.GetUdonScriptVersion): captureFunc = InternalFunc.ScriptVersion; break; case nameof(UdonSharpUtility.GetLastCompileDate): captureFunc = InternalFunc.ScriptCompileDate; break; case nameof(UdonSharpUtility.GetCompilerName): captureFunc = InternalFunc.ScriptCompilerName; break; default: captureFunc = InternalFunc.None; return(false); } return(captureFunc != InternalFunc.None); #endif } else if (captureScope.captureArchetype == ExpressionCaptureArchetype.Unknown || captureScope.captureArchetype == ExpressionCaptureArchetype.This || captureScope.captureArchetype == ExpressionCaptureArchetype.LocalSymbol || captureScope.captureArchetype == ExpressionCaptureArchetype.Property || captureScope.captureArchetype == ExpressionCaptureArchetype.Field || captureScope.captureArchetype == ExpressionCaptureArchetype.ExternUserField || captureScope.captureArchetype == ExpressionCaptureArchetype.ArrayIndexer) { captureFunc = InternalFunc.None; switch (accessToken) { case nameof(UdonSharpBehaviour.GetUdonTypeID): captureFunc = InternalFunc.TypeIDInstance; break; case nameof(UdonSharpBehaviour.GetUdonTypeName): captureFunc = InternalFunc.TypeNameInstance; break; } if (captureFunc == InternalFunc.None) { return(false); } return(true); } return(false); }