Skip to content

Commit 5a39bcf

Browse files
committed
PhpNamespace: class and function names are case-insensitive
1 parent 277f0f9 commit 5a39bcf

File tree

1 file changed

+24
-12
lines changed

1 file changed

+24
-12
lines changed

src/PhpGenerator/PhpNamespace.php

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -116,14 +116,17 @@ public function addUse(string $name, string $alias = null, string $of = self::NA
116116
do {
117117
$alias = $base . $counter;
118118
$counter++;
119-
} while ((isset($aliases[$alias]) && $aliases[$alias] !== $name) || isset($used[$alias]));
120-
121-
} elseif (isset($aliases[$alias]) && $aliases[$alias] !== $name) {
122-
throw new InvalidStateException(
123-
"Alias '$alias' used already for '{$aliases[$alias]}', cannot use for '$name'."
124-
);
125-
} elseif (isset($used[$alias])) {
126-
throw new Nette\InvalidStateException("Name '$alias' used already for '$this->name\\{$used[$alias]->getName()}'.");
119+
} while ((isset($aliases[$alias]) && $aliases[$alias] !== $name) || isset($used[strtolower($alias)]));
120+
121+
} else {
122+
$lower = strtolower($alias);
123+
if (isset($aliases[$alias]) && $aliases[$alias] !== $name) {
124+
throw new InvalidStateException(
125+
"Alias '$alias' used already for '{$aliases[$alias]}', cannot use for '$name'."
126+
);
127+
} elseif (isset($used[$lower])) {
128+
throw new Nette\InvalidStateException("Name '$alias' used already for '$this->name\\{$used[$lower]->getName()}'.");
129+
}
127130
}
128131

129132
$this->aliases[$of][$alias] = $name;
@@ -209,7 +212,7 @@ public function add(ClassType $class): self
209212
} elseif ($orig = $this->aliases[self::NAME_NORMAL][$name] ?? null) {
210213
throw new Nette\InvalidStateException("Name '$name' used already as alias for $orig.");
211214
}
212-
$this->classes[$name] = $class;
215+
$this->classes[strtolower($name)] = $class;
213216
return $this;
214217
}
215218

@@ -241,24 +244,33 @@ public function addEnum(string $name): ClassType
241244

242245
public function addFunction(string $name): GlobalFunction
243246
{
247+
$lower = strtolower($name);
244248
if ($orig = $this->aliases[self::NAME_FUNCTION][$name] ?? null) {
245249
throw new Nette\InvalidStateException("Name '$name' used already as alias for $orig.");
246250
}
247-
return $this->functions[$name] = new GlobalFunction($name);
251+
return $this->functions[$lower] = new GlobalFunction($name);
248252
}
249253

250254

251255
/** @return ClassType[] */
252256
public function getClasses(): array
253257
{
254-
return $this->classes;
258+
$res = [];
259+
foreach ($this->classes as $class) {
260+
$res[$class->getName()] = $class;
261+
}
262+
return $res;
255263
}
256264

257265

258266
/** @return GlobalFunction[] */
259267
public function getFunctions(): array
260268
{
261-
return $this->functions;
269+
$res = [];
270+
foreach ($this->functions as $fn) {
271+
$res[$fn->getName()] = $fn;
272+
}
273+
return $res;
262274
}
263275

264276

0 commit comments

Comments
 (0)