bug fix #263
This commit is contained in:
parent
132b1e2de2
commit
c6e66a4599
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "1";
|
||||
public const string Build = "0";
|
||||
public const string Revision = "1291";
|
||||
public const string Revision = "1295";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%COREVERSION%=0
|
||||
%REVISION%=1291
|
||||
%REVISION%=1295
|
||||
%MINOR%=1
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
11
InstallerSamples/!NewExecutors/Браузер1.pas
Normal file
11
InstallerSamples/!NewExecutors/Браузер1.pas
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
uses ГрафическиеИсполнители;
|
||||
|
||||
begin
|
||||
var КнопкаЯндекс := СоздатьКнопку('Яндекс');
|
||||
var КнопкаВКШ := СоздатьКнопку('ВКШ');
|
||||
|
||||
var Браузер := СоздатьБраузер;
|
||||
|
||||
КнопкаЯндекс.ПриНажатии += Браузер.ОтобразитьСайт('http://www.yandex.ru');
|
||||
КнопкаВКШ.ПриНажатии += Браузер.ОтобразитьСайт('http://sunschool.mmcs.sfedu.ru');
|
||||
end.
|
||||
54
InstallerSamples/!NewExecutors/ГрафическиеИсполнители.pas
Normal file
54
InstallerSamples/!NewExecutors/ГрафическиеИсполнители.pas
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
unit ГрафическиеИсполнители;
|
||||
|
||||
uses FormsABC;
|
||||
|
||||
type
|
||||
WebBrowser2 = class(WebBrowser)
|
||||
public
|
||||
procedure Отобразить(адрес: string) := Navigate(адрес);
|
||||
function ОтобразитьСайт(адрес: string): () -> () :=
|
||||
() -> Self.Отобразить(адрес);
|
||||
end;
|
||||
Button2 = class(Button)
|
||||
private
|
||||
procedure ppp(sender: Object; e: System.EventArgs);
|
||||
public
|
||||
event ПриНажатии: procedure;
|
||||
constructor Create(text: string);
|
||||
begin
|
||||
inherited Create(text);
|
||||
b.Click += ppp;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure Button2.ppp(sender: Object; e: System.EventArgs);
|
||||
begin
|
||||
if ПриНажатии<>nil then
|
||||
ПриНажатии
|
||||
end;
|
||||
|
||||
|
||||
procedure Init();
|
||||
begin
|
||||
MainForm.SetSize(1024,768);
|
||||
end;
|
||||
|
||||
function СоздатьКнопку(Заголовок: string): Button2;
|
||||
begin
|
||||
ParentControl := MainPanel;
|
||||
Result := new Button2(Заголовок);
|
||||
end;
|
||||
|
||||
function СоздатьБраузер: WebBrowser2;
|
||||
begin
|
||||
MainPanel.Dock := Dockstyle.Left;
|
||||
MainPanel.Width := 130;
|
||||
ParentControl := MainForm;
|
||||
Result := new WebBrowser2;
|
||||
Result.Dock := DockStyle.Fill;
|
||||
end;
|
||||
|
||||
|
||||
begin
|
||||
Init();
|
||||
end.
|
||||
Binary file not shown.
|
|
@ -2,6 +2,258 @@
|
|||
<AspectFile Version="3">
|
||||
<Node>
|
||||
<Items>
|
||||
<Node Name="!Исправленные ошибки">
|
||||
<Items>
|
||||
<Node Name="Sum(e->e) ошибка">
|
||||
<Items>
|
||||
<Node Name="new SeveralFunctionsCanBeCalled">
|
||||
<FileName>\TreeConverter\TreeConversion\convertion_data_and_alghoritms.cs</FileName>
|
||||
<Text>return AddError<function_node>(new SeveralFunctionsCanBeCalled(loc,set_of_possible_functions));</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public function_node select_function ( expressions_list parameters , SymbolInfo functions , location loc , List < SyntaxTree . expression > syntax_nodes_parameters = null )</i>
|
||||
<i Type="ClassOrNamespace">public class convertion_data_and_alghoritms</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="if (funcs.Count == 2)">
|
||||
<FileName>\TreeConverter\TreeConversion\convertion_data_and_alghoritms.cs</FileName>
|
||||
<Text>if (funcs.Count == 2)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public function_node select_function ( expressions_list parameters , SymbolInfo functions , location loc , List < SyntaxTree . expression > syntax_nodes_parameters = null )</i>
|
||||
<i Type="ClassOrNamespace">public class convertion_data_and_alghoritms</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="PVS Studio Detected">
|
||||
<Items>
|
||||
<Node Name="Нужно использовать && вместо ||">
|
||||
<FileName>\codecompletion\domconverter.cs</FileName>
|
||||
<Text>if (pattern != null || pattern != "")</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public SymInfo [ ] GetTypeByPattern ( string pattern , int line , int col , bool all_names , int nest_level )</i>
|
||||
<i Type="ClassOrNamespace">public class DomConverter</i>
|
||||
<i Type="ClassOrNamespace">namespace CodeCompletion</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Неиспользуемый результат Replace">
|
||||
<FileName>\visualplugins\languageconverter\source\textformatter.cs</FileName>
|
||||
<Text>_word.Replace(specSymbol, "");</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public string FormatWordWithKeyWord ( string _word , object _node )</i>
|
||||
<i Type="ClassOrNamespace">public class TextFormatter</i>
|
||||
<i Type="ClassOrNamespace">namespace Converter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Неиспользуемый результат OrderBy">
|
||||
<FileName>\visualpascalabcnet\formsdesignerbinding\dependecies\src\main\base\project\src\services\refactoringservice\refactoringservice.cs</FileName>
|
||||
<Text>result.OrderBy(node => node.Content.FullyQualifiedName);</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">static IEnumerable < ITreeNode < IClass > > FindDerivedClassesTree ( IClass baseClass , IEnumerable < IProjectContent > projectContents , HashSet < IClass > seenClasses )</i>
|
||||
<i Type="ClassOrNamespace">public static class RefactoringService</i>
|
||||
<i Type="ClassOrNamespace">namespace ICSharpCode . SharpDevelop . Refactoring</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Одинаковые подвыражения в условии">
|
||||
<Items>
|
||||
<Node Name="1">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>if (_pascal_set_constant.values != null && _pascal_set_constant.values != null)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public override void visit ( SyntaxTree . pascal_set_constant _pascal_set_constant )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="2">
|
||||
<FileName>\visualpascalabcnet\workbench\runnermanagerhandlers.cs</FileName>
|
||||
<Text>if (File.Exists(pdbFileName) && File.Exists(pdbFileName))</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">void WaitCallback_DeleteEXEAndPDB ( object state )</i>
|
||||
<i Type="ClassOrNamespace">public partial class WorkbenchRunService : VisualPascalABCPlugins . IWorkbenchRunService</i>
|
||||
<i Type="ClassOrNamespace">namespace VisualPascalABC</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Самая интересная ошибка">
|
||||
<FileName>\visualpascalabcnet\formsdesignerbinding\dependecies\src\main\base\project\src\editor\codecompletion\nrefactoryinsightwindowhandler.cs</FileName>
|
||||
<Note>Вот здесь то место, где не учитывается один вариант открывающих скобок
|
||||
Вместо одного из openBracketToken нужно написать openBracesToken</Note>
|
||||
<Text>if (token.Kind == openParensToken || token.Kind == openBracketToken || token.Kind == openBracketToken) {</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public void InitializeOpenedInsightWindow ( ITextEditor editor , IInsightWindow insightWindow )</i>
|
||||
<i Type="ClassOrNamespace">public class NRefactoryInsightWindowHandler : IInsightWindowHandler</i>
|
||||
<i Type="ClassOrNamespace">namespace ICSharpCode . SharpDevelop . Editor . CodeCompletion</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Всегда истинные выражения">
|
||||
<Items>
|
||||
<Node Name="1">
|
||||
<FileName>\treeconverter\systemlib\static_executors.cs</FileName>
|
||||
<Text>if (value >= int.MinValue && value <= int.MaxValue)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">private static int check_int_overflow ( location loc , int value )</i>
|
||||
<i Type="ClassOrNamespace">public static class static_executors</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . SystemLibrary</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="2">
|
||||
<FileName>\treeconverter\systemlib\static_executors.cs</FileName>
|
||||
<Text>if (value >= long.MinValue && value <= long.MaxValue)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">private static long check_long_overflow ( location loc , long value )</i>
|
||||
<i Type="ClassOrNamespace">public static class static_executors</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . SystemLibrary</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="3">
|
||||
<FileName>\NETGenerator\NETGenerator.cs</FileName>
|
||||
<Text>if (pos <= 255) il.Emit(OpCodes.Starg_S, pos);</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">private void ConvertInc ( IExpressionNode e )</i>
|
||||
<i Type="ClassOrNamespace">public class ILConverter : AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . NETGenerator</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="4">
|
||||
<FileName>\NETGenerator\NETGenerator.cs</FileName>
|
||||
<Text>if (pos <= 255) il.Emit(OpCodes.Starg_S, pos);</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">private void ConvertDec ( IExpressionNode e )</i>
|
||||
<i Type="ClassOrNamespace">public class ILConverter : AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . NETGenerator</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="5">
|
||||
<FileName>\NETGenerator\NETGenerator.cs</FileName>
|
||||
<Text>if (pos <= 255) il.Emit(OpCodes.Ldarga_S, pos);</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">private void AddrOfParameterNode ( ICommonParameterReferenceNode value )</i>
|
||||
<i Type="ClassOrNamespace">public class ILConverter : AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . NETGenerator</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Повторная проверка условия">
|
||||
<FileName>\codecompletion\findreferences.cs</FileName>
|
||||
<Note>Двумя строчками ниже
|
||||
(Здесь сказывается недостаток моего инструмента - если в методе есть две одинаковые строчки - переход осуществляется только на первую, а надо на вторую)</Note>
|
||||
<Text>if (ret_tn != null)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public override void visit ( indexer _indexer )</i>
|
||||
<i Type="ClassOrNamespace">public class ReferenceFinder : AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace CodeCompletion</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Дважды проверяется if (left is int64_const)">
|
||||
<FileName>\parsertools\syntaxtreevisitors\syntaxtreecomparer.cs</FileName>
|
||||
<Note>597 и 631 строки в текущей версии</Note>
|
||||
<Text>else if (left is int64_const)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public void CompareInternal ( expression left , expression right )</i>
|
||||
<i Type="ClassOrNamespace">public class SyntaxTreeComparer</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . SyntaxTree</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Трижды проверяется if (left is case_node)">
|
||||
<FileName>\parsertools\syntaxtreevisitors\syntaxtreecomparer.cs</FileName>
|
||||
<Note>1599
|
||||
1611
|
||||
1615 строки</Note>
|
||||
<Text>else if (left is case_node)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public void CompareInternal ( statement left , statement right )</i>
|
||||
<i Type="ClassOrNamespace">public class SyntaxTreeComparer</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . SyntaxTree</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Ошибка read(x,s)">
|
||||
<Items>
|
||||
<Node Name="make_read_call вызов">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>expression_node bfcint = make_read_call(si, _method_call.parameters, subloc2);</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">internal void visit_method_call ( SyntaxTree . method_call _method_call )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="make_read_call - описание">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<OCtx>
|
||||
<i Type="Method">private expression_node make_read_call ( SymbolInfo si , SyntaxTree . expression_list parameters , location loc )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="readln_string_file = true;">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Note>Это - непонятное место из-за которого происходит ошибка</Note>
|
||||
<Text>readln_string_file = true;</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">private expression_node make_read_call ( SymbolInfo si , SyntaxTree . expression_list parameters , location loc )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="!readln_string_file">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>if (!readln_string_file)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">private expression_node make_read_call ( SymbolInfo si , SyntaxTree . expression_list parameters , location loc )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Добавляем t[1] где t - Tuple">
|
||||
<Items>
|
||||
<Node Name="visit(SyntaxTree.indexer _indexer)">
|
||||
|
|
@ -616,263 +868,8 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="PVS Studio Detected">
|
||||
<Items>
|
||||
<Node Name="Нужно использовать && вместо ||">
|
||||
<FileName>\codecompletion\domconverter.cs</FileName>
|
||||
<Text>if (pattern != null || pattern != "")</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public SymInfo [ ] GetTypeByPattern ( string pattern , int line , int col , bool all_names , int nest_level )</i>
|
||||
<i Type="ClassOrNamespace">public class DomConverter</i>
|
||||
<i Type="ClassOrNamespace">namespace CodeCompletion</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Неиспользуемый результат Replace">
|
||||
<FileName>\visualplugins\languageconverter\source\textformatter.cs</FileName>
|
||||
<Text>_word.Replace(specSymbol, "");</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public string FormatWordWithKeyWord ( string _word , object _node )</i>
|
||||
<i Type="ClassOrNamespace">public class TextFormatter</i>
|
||||
<i Type="ClassOrNamespace">namespace Converter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Неиспользуемый результат OrderBy">
|
||||
<FileName>\visualpascalabcnet\formsdesignerbinding\dependecies\src\main\base\project\src\services\refactoringservice\refactoringservice.cs</FileName>
|
||||
<Text>result.OrderBy(node => node.Content.FullyQualifiedName);</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">static IEnumerable < ITreeNode < IClass > > FindDerivedClassesTree ( IClass baseClass , IEnumerable < IProjectContent > projectContents , HashSet < IClass > seenClasses )</i>
|
||||
<i Type="ClassOrNamespace">public static class RefactoringService</i>
|
||||
<i Type="ClassOrNamespace">namespace ICSharpCode . SharpDevelop . Refactoring</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Одинаковые подвыражения в условии">
|
||||
<Items>
|
||||
<Node Name="1">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>if (_pascal_set_constant.values != null && _pascal_set_constant.values != null)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public override void visit ( SyntaxTree . pascal_set_constant _pascal_set_constant )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="2">
|
||||
<FileName>\visualpascalabcnet\workbench\runnermanagerhandlers.cs</FileName>
|
||||
<Text>if (File.Exists(pdbFileName) && File.Exists(pdbFileName))</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">void WaitCallback_DeleteEXEAndPDB ( object state )</i>
|
||||
<i Type="ClassOrNamespace">public partial class WorkbenchRunService : VisualPascalABCPlugins . IWorkbenchRunService</i>
|
||||
<i Type="ClassOrNamespace">namespace VisualPascalABC</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Самая интересная ошибка">
|
||||
<FileName>\visualpascalabcnet\formsdesignerbinding\dependecies\src\main\base\project\src\editor\codecompletion\nrefactoryinsightwindowhandler.cs</FileName>
|
||||
<Note>Вот здесь то место, где не учитывается один вариант открывающих скобок
|
||||
Вместо одного из openBracketToken нужно написать openBracesToken</Note>
|
||||
<Text>if (token.Kind == openParensToken || token.Kind == openBracketToken || token.Kind == openBracketToken) {</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public void InitializeOpenedInsightWindow ( ITextEditor editor , IInsightWindow insightWindow )</i>
|
||||
<i Type="ClassOrNamespace">public class NRefactoryInsightWindowHandler : IInsightWindowHandler</i>
|
||||
<i Type="ClassOrNamespace">namespace ICSharpCode . SharpDevelop . Editor . CodeCompletion</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Всегда истинные выражения">
|
||||
<Items>
|
||||
<Node Name="1">
|
||||
<FileName>\treeconverter\systemlib\static_executors.cs</FileName>
|
||||
<Text>if (value >= int.MinValue && value <= int.MaxValue)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">private static int check_int_overflow ( location loc , int value )</i>
|
||||
<i Type="ClassOrNamespace">public static class static_executors</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . SystemLibrary</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="2">
|
||||
<FileName>\treeconverter\systemlib\static_executors.cs</FileName>
|
||||
<Text>if (value >= long.MinValue && value <= long.MaxValue)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">private static long check_long_overflow ( location loc , long value )</i>
|
||||
<i Type="ClassOrNamespace">public static class static_executors</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . SystemLibrary</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="3">
|
||||
<FileName>\NETGenerator\NETGenerator.cs</FileName>
|
||||
<Text>if (pos <= 255) il.Emit(OpCodes.Starg_S, pos);</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">private void ConvertInc ( IExpressionNode e )</i>
|
||||
<i Type="ClassOrNamespace">public class ILConverter : AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . NETGenerator</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="4">
|
||||
<FileName>\NETGenerator\NETGenerator.cs</FileName>
|
||||
<Text>if (pos <= 255) il.Emit(OpCodes.Starg_S, pos);</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">private void ConvertDec ( IExpressionNode e )</i>
|
||||
<i Type="ClassOrNamespace">public class ILConverter : AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . NETGenerator</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="5">
|
||||
<FileName>\NETGenerator\NETGenerator.cs</FileName>
|
||||
<Text>if (pos <= 255) il.Emit(OpCodes.Ldarga_S, pos);</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">private void AddrOfParameterNode ( ICommonParameterReferenceNode value )</i>
|
||||
<i Type="ClassOrNamespace">public class ILConverter : AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . NETGenerator</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Повторная проверка условия">
|
||||
<FileName>\codecompletion\findreferences.cs</FileName>
|
||||
<Note>Двумя строчками ниже
|
||||
(Здесь сказывается недостаток моего инструмента - если в методе есть две одинаковые строчки - переход осуществляется только на первую, а надо на вторую)</Note>
|
||||
<Text>if (ret_tn != null)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public override void visit ( indexer _indexer )</i>
|
||||
<i Type="ClassOrNamespace">public class ReferenceFinder : AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace CodeCompletion</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Дважды проверяется if (left is int64_const)">
|
||||
<FileName>\parsertools\syntaxtreevisitors\syntaxtreecomparer.cs</FileName>
|
||||
<Note>597 и 631 строки в текущей версии</Note>
|
||||
<Text>else if (left is int64_const)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public void CompareInternal ( expression left , expression right )</i>
|
||||
<i Type="ClassOrNamespace">public class SyntaxTreeComparer</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . SyntaxTree</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Трижды проверяется if (left is case_node)">
|
||||
<FileName>\parsertools\syntaxtreevisitors\syntaxtreecomparer.cs</FileName>
|
||||
<Note>1599
|
||||
1611
|
||||
1615 строки</Note>
|
||||
<Text>else if (left is case_node)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public void CompareInternal ( statement left , statement right )</i>
|
||||
<i Type="ClassOrNamespace">public class SyntaxTreeComparer</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . SyntaxTree</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Ошибка read(x,s)">
|
||||
<Items>
|
||||
<Node Name="make_read_call вызов">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>expression_node bfcint = make_read_call(si, _method_call.parameters, subloc2);</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">internal void visit_method_call ( SyntaxTree . method_call _method_call )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="make_read_call - описание">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<OCtx>
|
||||
<i Type="Method">private expression_node make_read_call ( SymbolInfo si , SyntaxTree . expression_list parameters , location loc )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="readln_string_file = true;">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Note>Это - непонятное место из-за которого происходит ошибка</Note>
|
||||
<Text>readln_string_file = true;</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">private expression_node make_read_call ( SymbolInfo si , SyntaxTree . expression_list parameters , location loc )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="!readln_string_file">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>if (!readln_string_file)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">private expression_node make_read_call ( SymbolInfo si , SyntaxTree . expression_list parameters , location loc )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="visit_program_code(_block.program_code)">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>visit_program_code(_block.program_code);</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public override void visit ( SyntaxTree . block _block )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="lab.is_defined">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>if (lab.is_defined)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public override void visit ( SyntaxTree . labeled_statement _labeled_statement )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Yield">
|
||||
<Items>
|
||||
<Node Name="Осн. визитор visit(procedure_definition pd)">
|
||||
<FileName>\SyntaxVisitors\YieldVisitors\ProcessYieldsCapturedVars.cs</FileName>
|
||||
<Text>public override void visit(procedure_definition pd)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public override void visit ( procedure_definition pd )</i>
|
||||
<i Type="ClassOrNamespace">public class ProcessYieldCapturedVarsVisitor : BaseChangeVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace SyntaxVisitors</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="root.visit(new ProcessYieldCapturedVarsVisitor());">
|
||||
<FileName>\Yield\YieldConversionSyntax\YieldDesugarSyntaxTreeConverter.cs</FileName>
|
||||
<Text>root.visit(new ProcessYieldCapturedVarsVisitor());</Text>
|
||||
|
|
@ -884,6 +881,17 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Осн. визитор visit(procedure_definition pd)">
|
||||
<FileName>\SyntaxVisitors\YieldVisitors\ProcessYieldsCapturedVars.cs</FileName>
|
||||
<Text>public override void visit(procedure_definition pd)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public override void visit ( procedure_definition pd )</i>
|
||||
<i Type="ClassOrNamespace">public class ProcessYieldCapturedVarsVisitor : BaseChangeVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace SyntaxVisitors</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="NewConstructFiniteAutomata">
|
||||
<Items>
|
||||
<Node Name="ConstructFiniteAutomata1">
|
||||
|
|
@ -1149,32 +1157,6 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Sum(e->e) ошибка">
|
||||
<Items>
|
||||
<Node Name="new SeveralFunctionsCanBeCalled">
|
||||
<FileName>\TreeConverter\TreeConversion\convertion_data_and_alghoritms.cs</FileName>
|
||||
<Text>return AddError<function_node>(new SeveralFunctionsCanBeCalled(loc,set_of_possible_functions));</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public function_node select_function ( expressions_list parameters , SymbolInfo functions , location loc , List < SyntaxTree . expression > syntax_nodes_parameters = null )</i>
|
||||
<i Type="ClassOrNamespace">public class convertion_data_and_alghoritms</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="if (funcs.Count == 2)">
|
||||
<FileName>\TreeConverter\TreeConversion\convertion_data_and_alghoritms.cs</FileName>
|
||||
<Text>if (funcs.Count == 2)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public function_node select_function ( expressions_list parameters , SymbolInfo functions , location loc , List < SyntaxTree . expression > syntax_nodes_parameters = null )</i>
|
||||
<i Type="ClassOrNamespace">public class convertion_data_and_alghoritms</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="a.Sort((row1, row2) -> 1)">
|
||||
<Items>
|
||||
<Node Name="visit_method_call">
|
||||
|
|
@ -1216,6 +1198,72 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="[::]">
|
||||
<Items>
|
||||
<Node Name="visit(slice_expr">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<OCtx>
|
||||
<i Type="Method">public override void visit ( SyntaxTree . slice_expr sl )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Таблица символов">
|
||||
<Items>
|
||||
<Node Name="class DSSymbolTable">
|
||||
<FileName>\TreeConverter\SymbolTable\DSST\SymbolTable.cs</FileName>
|
||||
<Text>public class DSSymbolTable</Text>
|
||||
<OCtx>
|
||||
<i Type="ClassOrNamespace">public class DSSymbolTable</i>
|
||||
<i Type="ClassOrNamespace">namespace SymbolTable</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
<ICtx>
|
||||
<i Type="Field">public List < Scope > ScopeTable</i>
|
||||
<i Type="Field">private DSHashTable HashTable</i>
|
||||
<i Type="Field">internal bool CaseSensitive</i>
|
||||
<i Type="Field">private Scope LastScope</i>
|
||||
<i Type="Field">private Scope CurrentScope</i>
|
||||
<i Type="Method">public DSSymbolTable ( int hash_size , bool case_sensitive )</i>
|
||||
<i Type="Method">public void Clear ( )</i>
|
||||
<i Type="Method">public LambdaScope CreateLambdaScope ( Scope TopScope )</i>
|
||||
<i Type="Method">public Scope CreateScope ( Scope TopScope )</i>
|
||||
<i Type="Method">public ClassScope CreateClassScope ( Scope TopScope , Scope BaseClass )</i>
|
||||
</ICtx>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="DockError">
|
||||
<Items>
|
||||
<Node Name="visit(SyntaxTree.assign">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.assign _assign)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public override void visit ( SyntaxTree . assign _assign )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="visit(function_lambda_definition">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.function_lambda_definition _function_lambda_definition)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public override void visit ( SyntaxTree . function_lambda_definition _function_lambda_definition )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
</AspectFile>
|
||||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.1.0.1291'
|
||||
!define VERSION '3.1.0.1295'
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ namespace SyntaxVisitors
|
|||
//PrintInfo = false;
|
||||
}
|
||||
|
||||
public override void Enter(syntax_tree_node st)
|
||||
/*public override void Enter(syntax_tree_node st)
|
||||
{
|
||||
base.Enter(st);
|
||||
countNodesVisited++;
|
||||
|
|
@ -66,7 +66,7 @@ namespace SyntaxVisitors
|
|||
{
|
||||
visitNode = false; // фильтр - куда не заходить
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
/*public override void visit(class_members cm)
|
||||
{
|
||||
|
|
@ -367,7 +367,7 @@ namespace SyntaxVisitors
|
|||
{
|
||||
// Объявление функции в классе?
|
||||
var classDef = UpperNode(3) as class_definition;
|
||||
if ((UpperNode(3) as class_definition) != null)
|
||||
if (classDef != null)
|
||||
{
|
||||
var td = UpperNode(4) as type_declaration;
|
||||
if (td != null)
|
||||
|
|
|
|||
|
|
@ -68,6 +68,7 @@ namespace SyntaxVisitors
|
|||
{
|
||||
if (!first_time_visit_function_header) // чтобы в лямбдах не заходить в формальные параметры. Во вложенных тоже не зайдёт
|
||||
return;
|
||||
// SSM переименование формальных параметров (нужно если мы их изменяем внутри)
|
||||
++CurrentLevel;
|
||||
BlockNamesStack.Add(new Dictionary<string, string>());
|
||||
if (fp != null)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (c) Ivan Bondarev, Stanislav Mihalkovich (for details please see \doc\copyright.txt)
|
||||
// Copyright (c) Ivan Bondarev, Stanislav Mihalkovich (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
unit FormsABC;
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ type
|
|||
|
||||
/// Кнопка
|
||||
Button = class
|
||||
private
|
||||
protected
|
||||
b := new System.Windows.Forms.Button;
|
||||
procedure BClick(sender: Object; e: EventArgs);
|
||||
public
|
||||
|
|
@ -240,6 +240,11 @@ type
|
|||
private
|
||||
function GetText: string;
|
||||
procedure SetText(s: string);
|
||||
function GetDocumentStream: System.IO.Stream := (f as System.Windows.Forms.WebBrowser).DocumentStream;
|
||||
procedure SetDocumentStream(s: System.IO.Stream);
|
||||
begin
|
||||
(f as System.Windows.Forms.WebBrowser).DocumentStream := s;
|
||||
end;
|
||||
function GetAddress: string;
|
||||
procedure WBDocumentCompleted(sender: Object; e: WebBrowserDocumentCompletedEventArgs);
|
||||
public
|
||||
|
|
@ -251,6 +256,7 @@ type
|
|||
procedure GoForward;
|
||||
procedure GoHome;
|
||||
property Address: string read GetAddress;
|
||||
property DocumentStream: System.IO.Stream read GetDocumentStream write SetDocumentStream;
|
||||
end;
|
||||
|
||||
/// Окно для рисования
|
||||
|
|
@ -998,6 +1004,7 @@ end;
|
|||
constructor WebBrowser.Create();
|
||||
begin
|
||||
f := new System.Windows.Forms.WebBrowser;
|
||||
(f as System.Windows.Forms.WebBrowser).ScriptErrorsSuppressed := True;
|
||||
ParentControl.Add(f);
|
||||
CurrentControl := f;
|
||||
(f as System.Windows.Forms.WebBrowser).DocumentCompleted += WBDocumentCompleted;
|
||||
|
|
|
|||
|
|
@ -23,24 +23,29 @@ namespace PascalABCCompiler.TreeConverter
|
|||
_mot = motivation.expression_evaluation;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// синоним reset()
|
||||
/// </summary>
|
||||
public void set_motivation_to_expect_expression_evaluation()
|
||||
{
|
||||
_mot=motivation.expression_evaluation;
|
||||
}
|
||||
|
||||
public void set_motivation_to_expect_address()
|
||||
{
|
||||
_mot=motivation.address_reciving;
|
||||
}
|
||||
|
||||
public void set_motivation_to_except_semantic_node()
|
||||
public void set_motivation_to_expect_semantic_node()
|
||||
{
|
||||
_mot=motivation.semantic_node_reciving;
|
||||
}
|
||||
|
||||
public motivation motivation
|
||||
{
|
||||
//(ssyy) Darkstar!!! Данный код провоцирует ложные переходы в режиме трассировки!
|
||||
get
|
||||
{
|
||||
motivation temp=_mot;
|
||||
_mot=motivation.expression_evaluation;
|
||||
return temp;
|
||||
return _mot;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -737,7 +737,7 @@ namespace PascalABCCompiler.TreeConverter
|
|||
#endif
|
||||
|
||||
convertion_data_and_alghoritms.check_node_parser_error(tn);
|
||||
motivation_keeper.set_motivation_to_except_semantic_node();
|
||||
motivation_keeper.set_motivation_to_expect_semantic_node();
|
||||
return ret.visit(tn);
|
||||
}
|
||||
|
||||
|
|
@ -1722,7 +1722,10 @@ namespace PascalABCCompiler.TreeConverter
|
|||
public override void visit(SyntaxTree.inherited_message _inherited_message)
|
||||
{
|
||||
//throw new NotSupportedError(get_location(_inherited_message));
|
||||
switch (motivation_keeper.motivation)
|
||||
var mot = motivation_keeper.motivation;
|
||||
motivation_keeper.reset();
|
||||
|
||||
switch (mot)
|
||||
{
|
||||
case motivation.expression_evaluation: return_value(inherited_message_value_reciving(_inherited_message)); break;
|
||||
//case motivation.symbol_info_reciving: return_symbol_value(blocks.find(_ident.name));break;
|
||||
|
|
@ -1878,7 +1881,9 @@ namespace PascalABCCompiler.TreeConverter
|
|||
{
|
||||
if (_known_type_ident.type == PascalABCCompiler.SyntaxTree.known_type.string_type)
|
||||
{
|
||||
switch (motivation_keeper.motivation)
|
||||
var mot = motivation_keeper.motivation;
|
||||
motivation_keeper.reset();
|
||||
switch (mot)
|
||||
{
|
||||
case motivation.address_reciving: return_value(SystemLibrary.SystemLibrary.string_type); break;
|
||||
case motivation.expression_evaluation: return_value(SystemLibrary.SystemLibrary.string_type); break;
|
||||
|
|
@ -2384,7 +2389,9 @@ namespace PascalABCCompiler.TreeConverter
|
|||
public override void visit(SyntaxTree.inherited_ident _inherited_ident)
|
||||
{
|
||||
inherited_ident_processing = true;
|
||||
switch (motivation_keeper.motivation)
|
||||
var mot = motivation_keeper.motivation;
|
||||
motivation_keeper.reset();
|
||||
switch (mot)
|
||||
{
|
||||
case motivation.address_reciving: return_addressed_value(inherited_ident_address_reciving(_inherited_ident)); break;
|
||||
case motivation.expression_evaluation: return_value(inherited_ident_value_reciving(_inherited_ident)); break;
|
||||
|
|
@ -4691,7 +4698,8 @@ namespace PascalABCCompiler.TreeConverter
|
|||
}
|
||||
//throw new ArgumentNullException("test");
|
||||
|
||||
motivation mot = motivation_keeper.motivation;
|
||||
var mot = motivation_keeper.motivation;
|
||||
motivation_keeper.reset();
|
||||
|
||||
expression_node expr_node = null;
|
||||
expressions_list exprs = new expressions_list();
|
||||
|
|
@ -8145,8 +8153,8 @@ namespace PascalABCCompiler.TreeConverter
|
|||
foreach (SyntaxTree.expression s_expr in _with_statement.do_with.expressions)
|
||||
{
|
||||
//expression_node expr = ret.visit(s_expr);
|
||||
motivation mot = motivation_keeper.motivation;
|
||||
motivation_keeper.set_motivation_to_except_semantic_node();
|
||||
var mot = motivation_keeper.motivation;
|
||||
motivation_keeper.set_motivation_to_expect_semantic_node();
|
||||
semantic_node sn = ret.visit(s_expr as SyntaxTree.syntax_tree_node);
|
||||
motivation_keeper.reset();
|
||||
expression_node expr = sn as expression_node;
|
||||
|
|
@ -9225,7 +9233,7 @@ namespace PascalABCCompiler.TreeConverter
|
|||
|
||||
public override void visit(SyntaxTree.dot_node _dot_node)
|
||||
{
|
||||
motivation mot = motivation_keeper.motivation;
|
||||
var mot = motivation_keeper.motivation;
|
||||
SyntaxTree.ident id_left = _dot_node.left as SyntaxTree.ident;
|
||||
SyntaxTree.ident id_right = _dot_node.right as SyntaxTree.ident;
|
||||
if (_dot_node.right is ident_with_templateparams)
|
||||
|
|
@ -9238,6 +9246,7 @@ namespace PascalABCCompiler.TreeConverter
|
|||
visit(dotNodeToVisit);
|
||||
return;
|
||||
}
|
||||
motivation_keeper.reset();
|
||||
|
||||
if (id_left != null)
|
||||
{
|
||||
|
|
@ -14432,7 +14441,8 @@ namespace PascalABCCompiler.TreeConverter
|
|||
return;
|
||||
}
|
||||
|
||||
motivation mot = motivation_keeper.motivation;
|
||||
var mot = motivation_keeper.motivation;
|
||||
motivation_keeper.reset();
|
||||
SyntaxTree.ident idi = _indexer.dereferencing_value as SyntaxTree.ident;
|
||||
if (idi != null)
|
||||
{
|
||||
|
|
@ -14559,13 +14569,9 @@ namespace PascalABCCompiler.TreeConverter
|
|||
public override void visit(SyntaxTree.roof_dereference _roof_dereference)
|
||||
{
|
||||
expression_node exp = null;
|
||||
motivation mot = motivation_keeper.motivation;
|
||||
/*
|
||||
if (mot == motivation.address_reciving)
|
||||
{
|
||||
tmp = motivation_keeper.motivation;
|
||||
}
|
||||
*/
|
||||
var mot = motivation_keeper.motivation;
|
||||
motivation_keeper.reset();
|
||||
|
||||
exp = convert_strong(_roof_dereference.dereferencing_value);
|
||||
if (exp is typed_expression) exp = convert_typed_expression_to_function_call(exp as typed_expression);
|
||||
//Check this expression
|
||||
|
|
@ -15472,7 +15478,9 @@ namespace PascalABCCompiler.TreeConverter
|
|||
|
||||
public override void visit(SyntaxTree.ident _ident)
|
||||
{
|
||||
switch (motivation_keeper.motivation)
|
||||
var mot = motivation_keeper.motivation;
|
||||
motivation_keeper.reset();
|
||||
switch (mot)
|
||||
{
|
||||
case motivation.address_reciving: return_addressed_value(ident_address_reciving(_ident)); break;
|
||||
case motivation.expression_evaluation: return_value(ident_value_reciving(_ident)); break;
|
||||
|
|
@ -15496,7 +15504,9 @@ namespace PascalABCCompiler.TreeConverter
|
|||
public override void visit(SyntaxTree.double_const _double_const)
|
||||
{
|
||||
expression_node en = new double_const_node(_double_const.val, get_location(_double_const));
|
||||
switch (motivation_keeper.motivation)
|
||||
var mot = motivation_keeper.motivation;
|
||||
motivation_keeper.reset();
|
||||
switch (mot)
|
||||
{
|
||||
case motivation.address_reciving: throw new CompilerInternalError("Addres reciving from constant"); break;
|
||||
case motivation.expression_evaluation: return_value(en); break;
|
||||
|
|
@ -15535,7 +15545,9 @@ namespace PascalABCCompiler.TreeConverter
|
|||
}
|
||||
*/
|
||||
en = SystemLibrary.static_executors.make_int_const(int32.val, get_location(int32));
|
||||
switch (motivation_keeper.motivation)
|
||||
var mot = motivation_keeper.motivation;
|
||||
motivation_keeper.reset();
|
||||
switch (mot)
|
||||
{
|
||||
case motivation.address_reciving: throw new CompilerInternalError("Addres reciving from constant"); break;
|
||||
case motivation.expression_evaluation: return_value(en); break;
|
||||
|
|
@ -15548,7 +15560,9 @@ namespace PascalABCCompiler.TreeConverter
|
|||
public override void visit(SyntaxTree.int64_const int64)
|
||||
{
|
||||
expression_node en = new long_const_node(int64.val, get_location(int64));
|
||||
switch (motivation_keeper.motivation)
|
||||
var mot = motivation_keeper.motivation;
|
||||
motivation_keeper.reset();
|
||||
switch (mot)
|
||||
{
|
||||
case motivation.address_reciving: throw new CompilerInternalError("Addres reciving from constant"); break;
|
||||
case motivation.expression_evaluation: return_value(en); break;
|
||||
|
|
@ -15564,7 +15578,9 @@ namespace PascalABCCompiler.TreeConverter
|
|||
// :-)
|
||||
//throw new CompilerInternalError("Числа UInt64 доступны только в PascalABC.NET Professional Edition");
|
||||
expression_node en = new ulong_const_node(uint64.val, get_location(uint64));
|
||||
switch (motivation_keeper.motivation)
|
||||
var mot = motivation_keeper.motivation;
|
||||
motivation_keeper.reset();
|
||||
switch (mot)
|
||||
{
|
||||
case motivation.address_reciving: throw new CompilerInternalError("Addres reciving from constant"); break;
|
||||
case motivation.expression_evaluation: return_value(en); break;
|
||||
|
|
@ -15577,9 +15593,11 @@ namespace PascalABCCompiler.TreeConverter
|
|||
public override void visit(SyntaxTree.bool_const _bool_const)
|
||||
{
|
||||
expression_node en = new bool_const_node(_bool_const.val, get_location(_bool_const));
|
||||
switch (motivation_keeper.motivation)
|
||||
var mot = motivation_keeper.motivation;
|
||||
motivation_keeper.reset();
|
||||
switch (mot)
|
||||
{
|
||||
case motivation.address_reciving: throw new CompilerInternalError("Address reciving from constant"); break;
|
||||
case motivation.address_reciving: throw new CompilerInternalError("Address reciving from constant");
|
||||
case motivation.expression_evaluation: return_value(en); break;
|
||||
case motivation.semantic_node_reciving: return_semantic_value(en); break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ namespace YieldDesugarSyntaxTreeConverter
|
|||
#if DEBUG
|
||||
try
|
||||
{
|
||||
root.visit(new SimplePrettyPrinterVisitor(@"d:\\zzz1.txt"));
|
||||
//root.visit(new SimplePrettyPrinterVisitor(@"d:\\zzz1.txt"));
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (c) Ivan Bondarev, Stanislav Mihalkovich (for details please see \doc\copyright.txt)
|
||||
// Copyright (c) Ivan Bondarev, Stanislav Mihalkovich (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
unit FormsABC;
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ type
|
|||
|
||||
/// Кнопка
|
||||
Button = class
|
||||
private
|
||||
protected
|
||||
b := new System.Windows.Forms.Button;
|
||||
procedure BClick(sender: Object; e: EventArgs);
|
||||
public
|
||||
|
|
@ -240,6 +240,11 @@ type
|
|||
private
|
||||
function GetText: string;
|
||||
procedure SetText(s: string);
|
||||
function GetDocumentStream: System.IO.Stream := (f as System.Windows.Forms.WebBrowser).DocumentStream;
|
||||
procedure SetDocumentStream(s: System.IO.Stream);
|
||||
begin
|
||||
(f as System.Windows.Forms.WebBrowser).DocumentStream := s;
|
||||
end;
|
||||
function GetAddress: string;
|
||||
procedure WBDocumentCompleted(sender: Object; e: WebBrowserDocumentCompletedEventArgs);
|
||||
public
|
||||
|
|
@ -251,6 +256,7 @@ type
|
|||
procedure GoForward;
|
||||
procedure GoHome;
|
||||
property Address: string read GetAddress;
|
||||
property DocumentStream: System.IO.Stream read GetDocumentStream write SetDocumentStream;
|
||||
end;
|
||||
|
||||
/// Окно для рисования
|
||||
|
|
@ -998,6 +1004,7 @@ end;
|
|||
constructor WebBrowser.Create();
|
||||
begin
|
||||
f := new System.Windows.Forms.WebBrowser;
|
||||
(f as System.Windows.Forms.WebBrowser).ScriptErrorsSuppressed := True;
|
||||
ParentControl.Add(f);
|
||||
CurrentControl := f;
|
||||
(f as System.Windows.Forms.WebBrowser).DocumentCompleted += WBDocumentCompleted;
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Reference in a new issue