Method declared as inline will not work correct

if you open the PascalParser/PascalParse.sln from


The Tests inside will not work anymore
The test for Echoes will run if I change the signature in EnumTokenhelper
for IsJunk to:

  method IsJunk : Boolean; // inline;
    begin
      exit IsTokenIDJunk(self);
    end;

The Test for Island Windows will compile but produce some other errors in Runtime

Thanks, logged as bugs://83943

I get

An exception occurred in PascalParse.Test.Echoes, thread 0001 ()

Type: System.InvalidProgramException

Message:

Invalid IL code in ProHolz.Ast.TMyTestObject:Test1 (): IL_0094: call      0x06000142



Call Stack:

0000000000000041 mscorlib.dll, MonoMethod.Invoke (MonoMethod.cs 305)
0000000000000006 mscorlib.dll, MethodBase.Invoke (methodbase.cs 229)
0000000000000036 RemObjects.Elements.EUnit.dll, MethodReference.Invoke (Method.pas 136)
000000000000006C RemObjects.Elements.EUnit.dll, MethodAction.<_>b__0 (MethodAction.pas 19)
0000000000000008 RemObjects.Elements.EUnit.dll, ResultAction.DoExecute (ResultAction.pas 23)
0000000000000097 RemObjects.Elements.EUnit.dll, BaseAction.Execute (BaseAction.pas 36)
0000000000000053 RemObjects.Elements.EUnit.dll, TryFinallyAction.DoExecute (TryFinallyAction.pas 38)
0000000000000097 RemObjects.Elements.EUnit.dll, BaseAction.Execute (BaseAction.pas 36)
0000000000000092 RemObjects.Elements.EUnit.dll, Runner.RunTestcase (Runner.pas 130)
00000000000000C5 RemObjects.Elements.EUnit.dll, Runner.Run (Runner.pas 104)
000000000000007B RemObjects.Elements.EUnit.dll, Runner.RunChildren (Runner.pas 161)
0000000000000001 RemObjects.Elements.EUnit.dll, Runner.<RunClass>b__0 (Runner.pas 139)
0000000000000008 RemObjects.Elements.EUnit.dll, ResultAction.DoExecute (ResultAction.pas 23)
0000000000000097 RemObjects.Elements.EUnit.dll, BaseAction.Execute (BaseAction.pas 36)
0000000000000053 RemObjects.Elements.EUnit.dll, TryFinallyAction.DoExecute (TryFinallyAction.pas 38)
0000000000000097 RemObjects.Elements.EUnit.dll, BaseAction.Execute (BaseAction.pas 36)
0000000000000037 RemObjects.Elements.EUnit.dll, Runner.RunClass (Runner.pas 142)
00000000000000BC RemObjects.Elements.EUnit.dll, Runner.Run (Runner.pas 103)
000000000000007B RemObjects.Elements.EUnit.dll, Runner.RunChildren (Runner.pas 161)
0000000000000001 RemObjects.Elements.EUnit.dll, Runner.RunSuite (Runner.pas 148)
00000000000000B3 RemObjects.Elements.EUnit.dll, Runner.Run (Runner.pas 102)
0000000000000065 RemObjects.Elements.EUnit.dll, Runner.RunTests____withListener (Runner.pas 49)
000000000000000E PascalParse.exe, __Global.Main (Program.pas 13)

is that the error we’re supposed to be seeing?

The method it seems to be failing for is ProHolz.Ast.TMyTestObject.Test1.

Oddly, wile I was able to run your test project once by pressing Cmd-T (I assume I still had some binaries left from before), now that I tried. building it once with Cmd-B it fails with several errors on a missing metic named “createxNode” (which indeed isn’t defined anywhere i can see)…

Oh yes the last one is from CC you have to revert the source and disable W0, because cc goes wrong with static factory methods… I see I have not told it as a error, disabled the setting in Fire and Water and forgot about it.

Sorry, I’m not sure I understand what to revert. Can you just make sure the latest in git (thats what I used) compiles, or send me a compiling testcase separately?

thanx!

The last in GIT will compile,
the problem is with the fix for W0 enabled the source is wrong after a Build.
We can also do a Teamviewer if you want.
TSyntaxNode.Create(
becomes
createxNode.Create(

Hm, ok. is that. ing you reported elsewhere? I’m wasn’t aware of this happening…

Thanks, logged as bugs://83946

I can do a extra Report if you want.

Na, I logged it now; I was just surprised that I was supposed to expect/know about this happening :wink:

bugs://83946 got closed with status fixed.

Sorry to tell, but the problems are not full solved:

The case wit CC is only partial fixed. The source will be correct but there are Hints for W0:

before compile:

After Compile:

The inline problem is still there:

bugs://83946 got reopened.

bugs://83946 got closed with status fixed.

1 Like

Do you still get this @FritzW:

Test suite (11 tests) started
  TMyTestObject started
    Test1 finished. State: Succeeded.
    Test2 finished. State: Succeeded.
    Test3 finished. State: Succeeded.
    Test5 finished. State: Succeeded.
  TMyTestObject finished. State: Succeeded.
  ClassesTest started
    Test finished. State: Succeeded.
    TestClone finished. State: Succeeded.
  ClassesTest finished. State: Succeeded.
  TestBinaryReadeWriter started
    FirstTest finished. State: Succeeded.
    testBinaryXML finished. State: Failed. Message: [InvalidOperationException]: Stack empty.
  TestBinaryReadeWriter finished. State: Failed. Message: One or more test failed
  TestEnumsClass started
    FirstTest finished. State: Succeeded.
  TestEnumsClass finished. State: Succeeded.
  GlobalsTest started
  GlobalsTest finished. State: Succeeded.
  LexerTest started
    Test finished. State: Succeeded.
    TestElements finished. State: Succeeded.
  LexerTest finished. State: Succeeded.
  LexerPasTest started
    Test finished. State: Failed. Message: Expected " " but got "INTERFACE" (TestLexerPasLex.pas line 42)
    Test2 finished. State: Failed. Message: Expected " " but got "INTERFACE" (TestLexerPasLex.pas line 72)
    TestNumbers finished. State: Succeeded.
  LexerPasTest finished. State: Failed. Message: One or more test failed
  NodeStackTest started
    Test finished. State: Succeeded.
  NodeStackTest finished. State: Succeeded.
  TestSearchPath started
    Test1 finished. State: Succeeded.
  TestSearchPath finished. State: Succeeded.
  TestTreeBuilder started
    TestNames finished. State: Failed. Message: [InvalidOperationException]: Stack empty.
    TestAsm finished. State: Failed. Message: [ESyntaxTreeException]: "Identifier" expected found " "
    TestNameSpace finished. State: Failed. Message: [ESyntaxTreeException]: "Identifier" expected found " "
    TestCompilerVersions finished. State: Succeeded.
    TestCompilerDirectives finished. State: Failed. Message: Stack empty. (TestTreeBuilder.pas line 55)
    TestSynEditUnit finished. State: Failed. Message: Stack empty. (TestTreeBuilder.pas line 66)
    TestVariantRecord finished. State: Failed. Message: Stack empty. (TestTreeBuilder.pas line 139)
    TestConstArrays finished. State: Failed. Message: [InvalidOperationException]: Stack empty.
    TestCommentPositions finished. State: Failed. Message: [ESyntaxTreeException]: "Identifier" expected found " "
    TestCommentPositions2 finished. State: Failed. Message: [ESyntaxTreeException]: "Identifier" expected found " "
  TestTreeBuilder finished. State: Failed. Message: One or more test failed
  XCTestCase started
  XCTestCase finished. State: Succeeded.
Test suite (11 tests) finished. State: Failed. Message: One or more test failed
======================================
14 succeeded, 12 failed, 0 skipped, 0 untested

that’s the output I get.

bugs://83943 got closed with status cannotrepro.

Hi Carlo,
I have installed now fire 2501 and tested again:

Did you rebuild?

Can you send the (failing) PascalPArse.exe ?

Here is the exe

PascalParse.exe.zip (105.1 KB)