Версия 2.5.336.0
Воспроизведение:
- Создать ST функцию
- Нарушить синтаксис (я например пытался вмазать выражение в инициализацию переменной).
myvar1 : udint := 1;
myvar2 : udint := 2;
myvar 3: udint := myvar1 + myvar2
- Нажать Enter при вылете окна ошибки
- Повторить ошибку
- Нажать Enter при вылете окна ошибки
Воспроизведение вариант 2:
- var x : udint := 1 + x
- Дожидаемся окна автокомплита
- жмем ESC
- Моментальный вылет
Ошибка происходит так часто, что работать с ST практически не возможно, кроме как панически сохраняясь после каждой строчки.
Вообще сама по себе идея всплывающих окон при ошибке синтаксиса че-то как-то не очень, даже когда не вылетает.
2.5.336.0
System.NotSupportedException: Specified method is not supported.
at Owen.STEditor.Infrastructure.Adapters.Translator.T o(IExpression expression, StType variableType)
at Owen.STEditor.Infrastructure.Adapters.Translator.T o(Variable variable)
at System.Linq.Enumerable.SelectIPartitionIterator`2. PreallocatingToArray(Int32 count)
at System.Linq.Enumerable.SelectIPartitionIterator`2. ToArray()
at STContext.Messages.FunctionBlockTemplate..ctor(Gui d id, IEnumerable`1 inputs, IEnumerable`1 variables, IEnumerable`1 outputs, String name, FunctionBlockDocumentation metaData)
at Owen.STEditor.Infrastructure.Adapters.Translator.T oFunctionBlock(FunctionBlockData data)
at Owen.STEditor.Infrastructure.Adapters.Translator.T o(FunctionBlockData data)
at Owen.STEditor.Infrastructure.Adapters.OutputAdapte r.NotifyOnFunctionBlockChanged(FunctionBlockData functionBlockData)
at Owen.STEditor.ApplicationLayer.CompilationUnitUpda tedEventHandler.<>c__DisplayClass16_0.<NotifyOnFun ctionBlockUpdated>b__0()
at Owen.STEditor.ApplicationLayer.CompilationUnitUpda tedEventHandler.<>c.<Handle>b__14_3(Action action)
at Owen.STLanguage.Extensions.ForEach[T](IEnumerable`1 obj, Action`1 action)
at Owen.STEditor.ApplicationLayer.CompilationUnitUpda tedEventHandler.Handle(CompilationUnitUpdatedEvent ev)
at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128 _0(Object state)
at System.Windows.Threading.ExceptionWrapper.Internal RealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatch When(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.DispatcherOperation.Invok eImpl()
at MS.Internal.CulturePreservingExecutionContext.Call backWrapper(Object obj)
at System.Threading.ExecutionContext.RunInternal(Exec utionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at MS.Internal.CulturePreservingExecutionContext.Run( CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Threading.DispatcherOperation.Invok e()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(In tPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation( Object o)
at System.Windows.Threading.ExceptionWrapper.Internal RealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatch When(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.LegacyInvokeIm pl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at Interop.User32.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager. Interop.Mso.IMsoComponentManager.FPushMessageLoop( UIntPtr dwComponentID, msoloop uReason, Void* pvLoopData)
at System.Windows.Forms.Application.ThreadContext.Run MessageLoopInner(msoloop reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.Run MessageLoop(msoloop reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at ProgramRelayFBD.Program.Main(String[] args)