Comments (3)
Example transpiler showing the issue:
https://github.com/DoctorVanGogh/ExtendedStorage/blob/features/better-floatmenu-interop/Source/ExtendedStorage/Patches/%5BGUI%5D/FloatMenuMakerMap_AddHumanlikeOrders.cs
from harmony.
Sort of fixed. Due to complex flow logic, I cannot group all local variables at the top. So I added extra lines with // original starts here
and // original ends here
and all variables that are added by transpilers will appear after the // original starts here
line. Latest master has the fix, please verify.
from harmony.
Working on improvements. Now all locals are listed at the top, even the ones used by Harmony internally and all the ones that any transpilers has ever generated. Strangely, I have not found a reliable way to reduce the total list of local variables to those actually used. But then again, a list with gaps in the numbers from 0..n would look weird. So this is the current output (testing 1.2.0.1 and 2.0 co-existance):
### Harmony id=net.pardeike.harmony.test1, version=2.0.0.0, location=D:\Program Files (x86)\Steam\steamapps\common\data-0000000014ADFA00
### Started from Debug1.Main1..cctor(), location D:\Program Files (x86)\Steam\steamapps\common\data-0000000014B00A60
### At 2019-01-28 10.30.58
### Patch RimWorld.Dialog_Options, Void DoWindowContents(Rect)
Debug2 transpiling 1062 instructions
Debug1 transpiling 1062 instructions
L_0000: Local var 0: UnityEngine.Rect
L_0000: Local var 1: Verse.Listing_Standard
L_0000: Local var 2: System.Collections.Generic.List`1[[Verse.FloatMenuOption, Assembly-CSharp, Version=1.0.6955.24033, Culture=neutral, PublicKeyToken=null]]
// <snip>...
L_0000: Local var 54: System.Type
L_0000: Local var 55: System.Int32
L_0000: ldarg.0
L_0001: ldarg 1
L_0007: call Void Prefix(RimWorld.Dialog_Options, Rect)
L_000c: ldarg.0
L_000d: ldarg 1
L_0013: call Void Prefix(RimWorld.Dialog_Options, Rect)
L_0018: // start original
L_0018: ldc.i4.1
L_0019: stloc 55 (System.Int32)
L_001b: ldarg.1
L_001c: call Rect AtZero(Rect)
L_0021: stloc.0
// <snip>...
L_0f2f: Label78
L_0f2f: ldloc.1
L_0f30: callvirt Void End()
L_0f35: // end original
L_0f35: ret
DONE
from harmony.
Related Issues (20)
- Getting an instance from the TargetMethod patch HOT 1
- Using GeneratedRegex causes failed compile due to ReadOnlySpan HOT 2
- A crash after hook:The object's current state invalidates the operation HOT 2
- Harmony fails to patch method and throws exception in exported Godot build HOT 13
- NuGet Package reference assembly conflict HOT 8
- ModuleInitializerAttribute HOT 1
- RtDynamicMethod get MetadataToken throws InvalidOperationException HOT 2
- Patch on .net 7&8 throw TypeLoadException while debugging HOT 17
- Harmony 3.0: Utility Epic
- Investigate Testing the NuGet Package Directly HOT 3
- Add a Release Pipeline
- Hook exception: System.Exception: Cannot get result from void method System.Void HOT 2
- How to patch method of base class? HOT 1
- When applying a patch fails, the replacement's IL is not printed to the debug log HOT 2
- System.Exception: Parameter "xx" not found in method HOT 10
- SymbolExtensions does not resolve overriden method HOT 3
- can lib work in arm64? HOT 2
- Companion project promotion: Harmony Tools HOT 3
- PatchFunctions.UpdateWrapper NotImplementedException on MacOS HOT 11
- Harmony.Patch() is a bit slow. HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from harmony.