فهرست منبع

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 13 سال پیش
والد
کامیت
8dbe39c6c7
2فایلهای تغییر یافته به همراه6 افزوده شده و 1 حذف شده
  1. 1 1
      Source/cmGeneratorExpressionEvaluator.cxx
  2. 5 0
      Source/cmGeneratorExpressionParser.cxx

+ 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;