C#: Output async keyword for async methods (and suppress AsyncStateMachine)
This commit is contained in:
@@ -35,6 +35,7 @@ namespace Il2CppInspector.Outputs
|
||||
private const string CGAttribute = "System.Runtime.CompilerServices.CompilerGeneratedAttribute";
|
||||
private const string FBAttribute = "System.Runtime.CompilerServices.FixedBufferAttribute";
|
||||
private const string ExtAttribute = "System.Runtime.CompilerServices.ExtensionAttribute";
|
||||
private const string AsyncAttribute = "System.Runtime.CompilerServices.AsyncStateMachineAttribute";
|
||||
private const string DMAttribute = "System.Reflection.DefaultMemberAttribute";
|
||||
|
||||
// Assembly attributes we have already emitted
|
||||
@@ -621,7 +622,8 @@ namespace Il2CppInspector.Outputs
|
||||
var writer = new StringBuilder();
|
||||
|
||||
// Attributes
|
||||
writer.Append(method.CustomAttributes.Where(a => a.AttributeType.FullName != ExtAttribute).OrderBy(a => a.AttributeType.Name)
|
||||
writer.Append(method.CustomAttributes.Where(a => a.AttributeType.FullName != ExtAttribute && a.AttributeType.FullName != AsyncAttribute)
|
||||
.OrderBy(a => a.AttributeType.Name)
|
||||
.ToString(scope, prefix + "\t", emitPointer: !SuppressMetadata, mustCompile: MustCompile));
|
||||
|
||||
// IL2CPP doesn't seem to retain return type attributes
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2017-2020 Katy Coe - http://www.hearthcode.org - http://www.djkaty.com
|
||||
Copyright 2017-2020 Katy Coe - http://www.djkaty.com - https://github.com/djkaty
|
||||
Copyright 2020 Robert Xiao - https://robertxiao.ca
|
||||
|
||||
All rights reserved.
|
||||
@@ -285,6 +285,10 @@ namespace Il2CppInspector.Reflection
|
||||
if (Name == "op_Explicit")
|
||||
modifiers.Append("explicit ");
|
||||
|
||||
// Async depends on a compiler-generated attribute
|
||||
if (GetCustomAttributes("System.Runtime.CompilerServices.AsyncStateMachineAttribute").Any())
|
||||
modifiers.Append("async ");
|
||||
|
||||
// Will include a trailing space
|
||||
return modifiers.ToString();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user