浏览代码

AK: Warn when trying to set `@foo@` as a SourceGenerator key

I was very confused why I was getting "no key named `foo`" errors, so
hopefully this will save someone that confusion in the future. :^)

(It'll probably be me again...)
Sam Atkins 2 年之前
父节点
当前提交
32c99313a6
共有 1 个文件被更改,包括 9 次插入1 次删除
  1. 9 1
      AK/SourceGenerator.h

+ 9 - 1
AK/SourceGenerator.h

@@ -37,7 +37,15 @@ public:
 
     SourceGenerator fork() { return SourceGenerator { m_builder, m_mapping, m_opening, m_closing }; }
 
-    void set(StringView key, String value) { m_mapping.set(key, move(value)); }
+    void set(StringView key, String value)
+    {
+        if (key.contains(m_opening) || key.contains(m_closing)) {
+            warnln("SourceGenerator keys cannot contain the opening/closing delimiters `{}` and `{}`. (Keys are only wrapped in these when using them, not when setting them.)", m_opening, m_closing);
+            VERIFY_NOT_REACHED();
+        }
+        m_mapping.set(key, move(value));
+    }
+
     String get(StringView key) const
     {
         auto result = m_mapping.get(key);