Recent

Author Topic: FPC 2.7.1 Compilation Aborts without Error  (Read 4764 times)

jasonrobert

  • Newbie
  • Posts: 3
FPC 2.7.1 Compilation Aborts without Error
« on: August 25, 2014, 09:21:13 pm »
I've just started using Lazarus 1.1 with FPC 2.7.1 and I'm trying to port around 460 files to FPC.  It compiled the first couple of units I added to my project just fine which had no dependencies on other units, (typex.pas and numbers.pas).  But then it seems to get mad at me once I added my third unit betterobject.pas, which is a TObject replacement and introduces dependencies on BetterObjectRegistry.pas, OrderlyInit.pas, Generics.Collections.pas, better_collections.pas and so on. 

The compilation just aborts without any real error, just a few warnings and hints.   Short of just giving you my 2+ million lines of code, does this log mean anything to anyone?


Options changed, recompiling clean with -B
Hint: Start of reading config file C:\lazarus\fpc\2.7.1\bin\x86_64-win64\fpc.cfg
Hint: End of reading config file C:\lazarus\fpc\2.7.1\bin\x86_64-win64\fpc.cfg
Free Pascal Compiler version 2.7.1 [2013/08/28] for x86_64
Copyright (c) 1993-2013 by Florian Klaempfl and others
Target OS: Win64 for x64
Compiling UT_LAz.lpr
Compiling E:\source\Delphi\64\commonx\typex.pas
Compiling E:\source\Delphi\64\commonx\numbers.pas
Compiling E:\source\Delphi\64\commonx\betterobject.pas
E:\source\Delphi\64\commonx\betterobject.pas(3,2) Note: User defined: *******************COMPILING betterobject.pas
Compiling E:\source\Delphi\64\commonx\systemx.pas
Compiling E:\source\Delphi\64\commonx\betterobject.pas
E:\source\Delphi\64\commonx\betterobject.pas(3,2) Note: User defined: *******************COMPILING betterobject.pas
Compiling E:\source\Delphi\64\commonx\Generics.Collections.pas
Compiling E:\source\Delphi\64\commonx\Generics.Defaults.pas
Compiling E:\source\Delphi\64\commonx\Generics.Hashes.pas
E:\source\Delphi\64\commonx\Generics.Hashes.pas(781,3) Hint: Local absolutevar "k16" is not used
E:\source\Delphi\64\commonx\Generics.Collections.pas(49,60) Warning: Unit "Generics.Defaults" is experimental
Compiling E:\source\Delphi\64\commonx\Generics.Helpers.pas
E:\source\Delphi\64\commonx\Generics.Collections.pas(49,60) Warning: Unit "Generics.Helpers" is experimental
E:\source\Delphi\64\commonx\Generics.Collections.pas(1326,4) Hint: "open array" not yet supported inside inline procedure/function
E:\source\Delphi\64\commonx\Generics.Collections.pas(1326,4) Hint: Inlining disabled
E:\source\Delphi\64\commonx\Generics.Collections.pas(2060,92) Warning: Constructing a class "TCustomDictionaryEnumerator$6" with abstract method "DoMoveNext"
E:\source\Delphi\64\commonx\Generics.Collections.pas(148,14) Hint: Found abstract method: DoMoveNext(<TEnumerator$1>):Boolean;
E:\source\Delphi\64\commonx\Generics.Collections.pas(2060,92) Warning: Constructing a class "TCustomDictionaryEnumerator$6" with abstract method "GetCurrent"
E:\source\Delphi\64\commonx\Generics.Collections.pas(419,14) Hint: Found abstract method: GetCurrent(<TCustomDictionaryEnumerator$6>):<undefined type>;
E:\source\Delphi\64\commonx\Generics.Collections.pas(505,23) Hint: Parameter "M" not used
E:\source\Delphi\64\commonx\Generics.Collections.pas(523,23) Hint: Parameter "M" not used
E:\source\Delphi\64\commonx\Generics.Collections.pas(536,23) Hint: Parameter "M" not used
E:\source\Delphi\64\commonx\Generics.Collections.pas(212,31) Note: Private type "TList$1.TValueComparerBugHack" never used
E:\source\Delphi\64\commonx\Generics.Collections.pas(49,43) Hint: Unit "Generics.Helpers" not used in Generics.Collections
Writing Resource String Table file: Generics.Collections.rst
E:\source\Delphi\64\commonx\Generics.Collections.pas(132,14) Warning: An inherited method is hidden by "GetCurrent:ISimpleObserver;"
E:\source\Delphi\64\commonx\Generics.Collections.pas(137,14) Warning: An inherited method is hidden by "GetEnumerator:IEnumerator$1<ISimpleObserver>;"
E:\source\Delphi\64\commonx\Generics.Collections.pas(132,14) Warning: An inherited method is hidden by "GetCurrent:Class Of unresolved forward to TBetterObject;"
E:\source\Delphi\64\commonx\Generics.Collections.pas(137,14) Warning: An inherited method is hidden by "GetEnumerator:IEnumerator$1<TBetterObjectClass>;"
E:\source\Delphi\64\commonx\Generics.Collections.pas(132,14) Warning: An inherited method is hidden by "GetCurrent:TBOREntry;"
E:\source\Delphi\64\commonx\Generics.Collections.pas(137,14) Warning: An inherited method is hidden by "GetEnumerator:IEnumerator$1<TBOREntry>;"
Compiling E:\source\Delphi\64\commonx\BetterObjectRegistry.pas
E:\source\Delphi\64\commonx\BetterObjectRegistry.pas(6,12) Hint: Unit "betterobject" not used in BetterObjectRegistry
E:\source\Delphi\64\commonx\BetterObjectRegistry.pas(6,26) Hint: Unit "Generics.Collections" not used in BetterObjectRegistry
E:\source\Delphi\64\commonx\BetterObjectRegistry.pas(6,48) Hint: Unit "systemx" not used in BetterObjectRegistry
Compiling E:\source\Delphi\64\commonx\OrderlyInit.pas
E:\source\Delphi\64\commonx\OrderlyInit.pas(3,2) Note: User defined: *******************COMPILING OrderlyInit.pas
Compiling E:\source\Delphi\64\commonx\stringx.pas
E:\source\Delphi\64\commonx\stringx.pas(3,2) Note: User defined: *******************COMPILING stringutilities.pas
Compiling E:\source\Delphi\64\commonx\CommonConstants.pas
Compiling E:\source\Delphi\64\commonx\sort.pas
Compiling E:\source\Delphi\64\commonx\helpers.stream.pas
Compiling E:\source\Delphi\64\commonx\Debug.pas
Compiling E:\source\Delphi\64\commonx\sharedObject.pas
E:\source\Delphi\64\commonx\Generics.Collections.pas(132,14) Warning: An inherited method is hidden by "GetCurrent:TLockRecord;"
E:\source\Delphi\64\commonx\Generics.Collections.pas(137,14) Warning: An inherited method is hidden by "GetEnumerator:IEnumerator$1<TLockRecord>;"
E:\source\Delphi\64\commonx\Generics.Collections.pas(132,14) Warning: An inherited method is hidden by "GetCurrent:TNamedLock;"
E:\source\Delphi\64\commonx\Generics.Collections.pas(137,14) Warning: An inherited method is hidden by "GetEnumerator:IEnumerator$1<TNamedLock>;"
E:\source\Delphi\64\commonx\Generics.Collections.pas(132,14) Warning: An inherited method is hidden by "GetCurrent:TStandardMonitor;"
E:\source\Delphi\64\commonx\Generics.Collections.pas(137,14) Warning: An inherited method is hidden by "GetEnumerator:IEnumerator$1<TStandardMonitor>;"
E:\source\Delphi\64\commonx\Generics.Collections.pas(132,14) Warning: An inherited method is hidden by "GetCurrent:TMonitorableObject;"
E:\source\Delphi\64\commonx\Generics.Collections.pas(137,14) Warning: An inherited method is hidden by "GetEnumerator:IEnumerator$1<TMonitorableObject>;"
Compiling E:\source\Delphi\64\commonx\Debug.pas
Compiling E:\source\Delphi\64\commonx\ringbuffer.pas
Compiling E:\source\Delphi\64\commonx\ios.stringx.iosansi.pas
E:\source\Delphi\64\commonx\ios.stringx.iosansi.pas(88,38) Warning: Implicit string type conversion from "AnsiString" to "UnicodeString"
E:\source\Delphi\64\commonx\ios.stringx.iosansi.pas(147,22) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
E:\source\Delphi\64\commonx\ios.stringx.iosansi.pas(161,33) Warning: Implicit string type conversion from "Char" to "UnicodeString"
E:\source\Delphi\64\commonx\ios.stringx.iosansi.pas(155,3) Note: Local variable "s" is assigned but never used
E:\source\Delphi\64\commonx\ios.stringx.iosansi.pas(156,3) Note: Local variable "te" not used
E:\source\Delphi\64\commonx\ios.stringx.iosansi.pas(175,17) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
Compiling E:\source\Delphi\64\commonx\UnitTest.pas
Compiling E:\source\Delphi\64\commonx\ClassFactory.pas
E:\source\Delphi\64\commonx\ClassFactory.pas(7,10) Hint: Unit "Generics.Collections" not used in ClassFactory
Compiling E:\source\Delphi\64\commonx\Debug.pas
Compiling E:\source\Delphi\64\commonx\OrderlyInit.pas
E:\source\Delphi\64\commonx\OrderlyInit.pas(3,2) Note: User defined: *******************COMPILING OrderlyInit.pas
E:\source\Delphi\64\commonx\OrderlyInit.pas(149,36) Warning: unreachable code
E:\source\Delphi\64\commonx\OrderlyInit.pas(67,3) Hint: Unit "windows" not used in OrderlyInit
Compiling E:\source\Delphi\64\commonx\helpers.stream.pas
Compiling E:\source\Delphi\64\commonx\QueueStream.pas
Compiling E:\source\Delphi\64\commonx\SimpleQueue.pas
Compiling E:\source\Delphi\64\commonx\better_collections.pas
E:\source\Delphi\64\commonx\better_collections.pas(1,1) Fatal: Compilation aborted

marcov

  • Administrator
  • Hero Member
  • *
  • Posts: 11453
  • FPC developer.
Re: FPC 2.7.1 Compilation Aborts without Error
« Reply #1 on: August 25, 2014, 10:01:52 pm »

try to minimize the problem. Just shave off units in a copy till you can reproduce it with a few files. Then post that to bugtracker

jasonrobert

  • Newbie
  • Posts: 3
Re: FPC 2.7.1 Compilation Aborts without Error
« Reply #2 on: August 27, 2014, 12:25:23 am »
If I had to make a guess.   I think that this is somehow related to circular references.  systemx references betterobject in the interface which references back to systemx in the implementation.   I have no choice but to keep digging I guess.

marcov

  • Administrator
  • Hero Member
  • *
  • Posts: 11453
  • FPC developer.
Re: FPC 2.7.1 Compilation Aborts without Error
« Reply #3 on: August 27, 2014, 12:59:44 pm »
Even then there is usually some "can't find unit xxx' message.  Make sure your compiler output log reflects both stdout and stderr though.

jasonrobert

  • Newbie
  • Posts: 3
Re: FPC 2.7.1 Compilation Aborts without Error
« Reply #4 on: August 27, 2014, 09:27:36 pm »
I narrowed it down using some {$MESSAGE} directives.... it didn't want to compile some constructor which contained a call to TList<TSomeObject>.create ... I reported the bug.

 

TinyPortal © 2005-2018