[PATCH] D60387: FileCheck [7/12]: Arbitrary long numeric expressions

Thomas Preud'homme via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 12 08:11:04 PDT 2019


thopre marked 2 inline comments as done.
thopre added inline comments.


================
Comment at: llvm/lib/Support/FileCheck.cpp:108
+  VariableProperties VarProperties = {Name, IsPseudo};
+  return VarProperties;
 }
----------------
thopre wrote:
> jhenderson wrote:
> > You might be able to just do `return {Name, IsPseudo}` to avoid the temporary.
> I tried but it didn't work. I think it would if I was returning the structure, but here I'm returning an Expected.
> 
> As per 6.6.3 C++11 draft:
> "A return statement with a braced-init-list initializes the object or reference to be returned from the function by copy-list-initialization (8.5.4) from the specified initializer list."
> 
> So it tries to build an Expected with that initialization list which fails because I think an Expected<foo> only accepts a Foo.
Yes, that's it:

/home/thomasp/repos/llvm-project/llvm/lib/Support/FileCheck.cpp:107:10: error: no matching constructor for initialization of 'Expected<FileCheckPattern::VariableProperties>'
  return {Name, IsPseudo};
         ^~~~~~~~~~~~~~~~
/home/thomasp/repos/llvm-project/llvm/include/llvm/Support/Error.h:474:3: note: candidate template ignored: requirement 'std::is_convertible<StringRef &, VariableProperties>::value' was not satisfied [with OtherT = llvm::StringRef &]
  Expected(OtherT &&Val,
  ^

It tries to convert Name into a VariableProperties and fails. All the other constructors expect an Error or another Expected and fail as well.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D60387/new/

https://reviews.llvm.org/D60387





More information about the llvm-commits mailing list