Explorar o código

Merge topic 'generator-expression-refactor'

f20af79 Handle colons as a special case in the generator expression parser.
fb578c8 Fix the regular expression validator for target names.
David Cole %!s(int64=13) %!d(string=hai) anos
pai
achega
8dbe39c6c7

+ 1 - 1
Source/cmGeneratorExpressionEvaluator.cxx

@@ -299,7 +299,7 @@ struct TargetFilesystemArtifact : public cmGeneratorExpressionNode
     std::string name = *parameters.begin();
 
     cmsys::RegularExpression targetValidator;
-    targetValidator.compile("^[A-Za-z0-9_]+$");
+    targetValidator.compile("^[A-Za-z0-9_.-]+$");
     if (!targetValidator.find(name.c_str()))
       {
       ::reportError(context, content->GetOriginalExpression(),

+ 5 - 0
Source/cmGeneratorExpressionParser.cxx

@@ -127,6 +127,11 @@ void cmGeneratorExpressionParser::ParseGeneratorExpression(
         parameters.resize(parameters.size() + 1);
         ++this->it;
         }
+      if (this->it->TokenType == cmGeneratorExpressionToken::ColonSeparator)
+        {
+        extendText(*(parameters.end() - 1), this->it);
+        ++this->it;
+        }
       if (this->it == this->Tokens.end())
         {
         break;