Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

src/UniqueString.cxx:31:1: error: function 'Scintilla::UniqueStringSet::UniqueStringSet()' defaulted on its redeclaration with an exception-specification that differs from the implicit declaration #2518

Closed
zhirshya opened this issue May 28, 2020 · 8 comments

Comments

@zhirshya
Copy link

make err:
src/UniqueString.cxx:31:1: error: function 'Scintilla::UniqueStringSet::UniqueStringSet()' defaulted on its redeclaration with an exception-specification that differs from the implicit declaration 'Scintilla::UniqueStringSet::UniqueStringSet()'
UniqueStringSet::UniqueStringSet() noexcept = default;
^
Makefile:972: recipe for target 'src/UniqueString.lo' failed
make[3]: *** [src/UniqueString.lo] Error 1
make[3]: Leaving directory '/home/sugon/geany.git/scintilla'
Makefile:996: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/home/sugon/geany.git/scintilla'
Makefile:583: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/sugon/geany.git'
Makefile:468: recipe for target 'all' failed
make: *** [all] Error 2.

Env:
Linux localhost.localdomain 3.10.0-2.nd7.33.mips64el #1 SMP PREEMPT Mon Mar 25 14:44:24 CST 2019 mips64 mips64 mips64 GNU/Linux

g++ (GCC) 4.9.3 20150626 (NeoKylin 4.9.3-3)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

gcc (GCC) 4.9.3 20150626 (NeoKylin 4.9.3-3)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

@elextr
Copy link
Member

elextr commented May 28, 2020

Hmmm, it seems that a C++17-ism has crept into Scintilla LTS version.

My interpretation is that the default implementation of Scintilla::UniqueStringSet::UniqueStringSet() is not noexcept because although C++11 defined noexcept it was not until C++17 that the std::vector default constructor was made noexcept so the default constructor for Scintilla::UniqueStringSet::UniqueStringSet cannot be noexcept and so it conflicts with the explicitly specified noexcept.

#2506 appears to fix that, just needs to be tested, maybe you could try it.

@zhirshya
Copy link
Author

Thanks for your analysis and suggestion.
I switched to branch scintilla/update-3-20-0, and still got the same error when make.

@elextr
Copy link
Member

elextr commented May 28, 2020

Please show the full error message. If the error message is exactly the same then you havn't switched the branches properly as #2506 removes the noexcept from:

UniqueStringSet::UniqueStringSet() noexcept = default;

@zhirshya
Copy link
Author

zhirshya commented May 28, 2020

$ make
make  all-recursive
make[1]: Entering directory '/home/sugon/geany.git'
Making all in ctags
make[2]: Entering directory '/home/sugon/geany.git/ctags'
  CC       main/args.lo
  CC       main/ctags-api.lo
  CC       main/debug.lo
  CC       main/dependency.lo
  CC       main/entry.lo
  CC       main/error.lo
  CC       main/field.lo
  CC       main/flags.lo
  CC       main/fmt.lo
  CC       main/htable.lo
  CC       main/keyword.lo
  CC       main/kind.lo
  CC       main/lcpp.lo
  CC       main/lregex.lo
  CC       main/lxcmd.lo
  CC       main/lxpath.lo
  CC       main/main.lo
  CC       main/mio.lo
  CC       main/nestlevel.lo
  CC       main/numarray.lo
  CC       main/objpool.lo
  CC       main/options.lo
  CC       main/output-ctags.lo
  CC       main/parse.lo
  CC       main/pcoproc.lo
  CC       main/promise.lo
  CC       main/ptag.lo
  CC       main/ptrarray.lo
  CC       main/read.lo
  CC       main/repoinfo.lo
  CC       main/routines.lo
  CC       main/selectors.lo
  CC       main/sort.lo
  CC       main/strlist.lo
  CC       main/trashbox.lo
  CC       main/vstring.lo
  CC       main/xtag.lo
  CC       parsers/abaqus.lo
  CC       parsers/abc.lo
  CC       parsers/asciidoc.lo
  CC       parsers/asm.lo
  CC       parsers/basic.lo
  CC       parsers/bibtex.lo
  CC       parsers/c.lo
  CC       parsers/cobol.lo
  CC       parsers/iniconf.lo
  CC       parsers/css.lo
  CC       parsers/diff.lo
  CC       parsers/docbook.lo
  CC       parsers/erlang.lo
  CC       parsers/flex.lo
  CC       parsers/fortran.lo
  CC       parsers/go.lo
  CC       parsers/haskell.lo
  CC       parsers/haxe.lo
  CC       parsers/html.lo
  CC       parsers/jscript.lo
  CC       parsers/json.lo
  CC       parsers/lua.lo
  CC       parsers/make.lo
  CC       parsers/markdown.lo
  CC       parsers/matlab.lo
  CC       parsers/nsis.lo
  CC       parsers/objc.lo
  CC       parsers/pascal.lo
  CC       parsers/perl.lo
  CC       parsers/php.lo
  CC       parsers/powershell.lo
  CC       parsers/python.lo
  CC       parsers/r.lo
  CC       parsers/rst.lo
  CC       parsers/ruby.lo
  CC       parsers/rust.lo
  CC       parsers/sh.lo
  CC       parsers/sql.lo
  CC       parsers/tcl.lo
  CC       parsers/tex.lo
  CC       parsers/txt2tags.lo
  CC       parsers/verilog.lo
  CC       parsers/vhdl.lo
  CCLD     libctags.la
make[2]: Leaving directory '/home/sugon/geany.git/ctags'
Making all in scintilla
make[2]: Entering directory '/home/sugon/geany.git/scintilla'
Making all in include
make[3]: Entering directory '/home/sugon/geany.git/scintilla/include'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/sugon/geany.git/scintilla/include'
make[3]: Entering directory '/home/sugon/geany.git/scintilla'
  CXX      gtk/PlatGTK.lo
  CXX      gtk/ScintillaGTK.lo
  CXX      gtk/ScintillaGTKAccessible.lo
  CC       gtk/scintilla-marshal.lo
  CXX      lexlib/Accessor.lo
  CXX      lexlib/CharacterCategory.lo
  CXX      lexlib/CharacterSet.lo
  CXX      lexlib/DefaultLexer.lo
  CXX      lexlib/LexerBase.lo
  CXX      lexlib/LexerModule.lo
  CXX      lexlib/LexerNoExceptions.lo
  CXX      lexlib/LexerSimple.lo
  CXX      lexlib/PropSetSimple.lo
  CXX      lexlib/StyleContext.lo
  CXX      lexlib/WordList.lo
  CXX      src/AutoComplete.lo
  CXX      src/CallTip.lo
  CXX      src/CaseConvert.lo
  CXX      src/CaseFolder.lo
  CXX      src/Catalogue.lo
  CXX      src/CellBuffer.lo
  CXX      src/CharClassify.lo
  CXX      src/ContractionState.lo
  CXX      src/DBCS.lo
  CXX      src/Decoration.lo
  CXX      src/Document.lo
  CXX      src/Editor.lo
  CXX      src/EditModel.lo
  CXX      src/EditView.lo
  CXX      src/ExternalLexer.lo
  CXX      src/Indicator.lo
  CXX      src/KeyMap.lo
  CXX      src/LineMarker.lo
  CXX      src/MarginView.lo
  CXX      src/PerLine.lo
  CXX      src/PositionCache.lo
  CXX      src/RESearch.lo
  CXX      src/RunStyles.lo
  CXX      src/ScintillaBase.lo
  CXX      src/Selection.lo
  CXX      src/Style.lo
  CXX      src/UniConversion.lo
  CXX      src/UniqueString.lo
src/UniqueString.cxx:31:1: error: function 'Scintilla::UniqueStringSet::UniqueStringSet()' defaulted on its redeclaration with an exception-specification that differs from the implicit declaration 'Scintilla::UniqueStringSet::UniqueStringSet()'
 UniqueStringSet::UniqueStringSet() noexcept = default;
 ^
Makefile:972: recipe for target 'src/UniqueString.lo' failed
make[3]: *** [src/UniqueString.lo] Error 1
make[3]: Leaving directory '/home/sugon/geany.git/scintilla'
Makefile:996: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/home/sugon/geany.git/scintilla'
Makefile:582: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/sugon/geany.git'
Makefile:467: recipe for target 'all' failed
make: *** [all] Error 2
$ git branch
  master
* scintilla/update-3-20-0

I first cloned the repo on windows, then tried

git fetch --all
    Fetching origin
git fetch origin (output empty)
git checkout -b scintilla/update-3-20-0
Switched to a new branch 'scintilla/update-3-20-0'

Then copied to an offline linux, dos2unix every text files in the directory.

@elextr
Copy link
Member

elextr commented May 28, 2020

I'm not sure what has gone wrong with your process, but as you can see above the error still shows noexcept on src/UniqueString.cxx:31 and #2506 clearly removes that, see (you will have to manually "load diff" probably).

@codebrainz
Copy link
Member

$ git remote add eht16 https://github.com/eht16/geany.git
$ git fetch eht16
$ git checkout --track -b eht16/scintilla/update-3-20-0 eht16/scintilla/update-3-20-0

@zhirshya
Copy link
Author

@codebrainz , your commands saved me, thank you.
I never think of adding another remote to a cloned repo and missing "--track" could be one of my earlier problems, what else I've done wrong?
I think your commands mean fetching all branches from eth16 and checkout and use branch scintilla/update-3-20-0.

@elextr
Copy link
Member

elextr commented May 29, 2020

@zhirshya instead of just closing and leaving, what about reporting if the PR #2506 worked for you?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants