Consider a taglib named 'foo-bar', freemarker blogs up with:
Expression e.foo is not numerical
Expression bar is not numerical
freemarker.core.ArithmeticExpression._getAsTemplateModel(ArithmeticExpression.java:96)
freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
freemarker.core.UnifiedCall.accept(UnifiedCall.java:97)
freemarker.core.Environment.visit(Environment.java:221)
freemarker.core.Environment.visit(Environment.java:310)
freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
freemarker.core.Environment.visit(Environment.java:221)
freemarker.core.Environment.visit(Environment.java:310)
freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
freemarker.core.Environment.visit(Environment.java:221)
freemarker.core.Environment.visit(Environment.java:310)
freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
freemarker.core.Environment.visit(Environment.java:221)
freemarker.core.MixedContent.accept(MixedContent.java:92)
freemarker.core.Environment.visit(Environment.java:221)
freemarker.core.Environment.process(Environment.java:199)
etc...
Not really a bug... although it become a problem for many after the JSP extension was added to FreeMarker. So I change this to an RFE. For now, you can write <@e['foo-bar']> instead of <e.foo-bar>.