X++ words reserved for future use

The Best Practice Check in Dynamics AX complains if you use some words as identifiers, because they may be used as keywords in future releases. For example, if you name a variable namespace, you’ll get the following Best Practice error:

The name namespace will be used as a reserved word in a future release.

Although Microsoft says “will be used”, I would read it as “might be used”. Nevertheless it’s still worth to look at it – it represents what Microsoft considers to implement (or considered, because the same list existed already in AX2009 and plans may have changed since then).

Here is the full list of these words:

  • As
  • Attribute
  • Enum
  • Foreach
  • Friend
  • In
  • Instance
  • Internal
  • Long
  • Is
  • Module
  • Namespace
  • Native
  • Out
  • Override
  • Readonly
  • Ref
  • Unique
  • Unsigned
  • WebService
  • XMLRoot

As and Is are already with us – they were added to X++ in AX2012.

I have no information about what changes are planned for the next version of X++, but some of these keywords refer to concepts currently unknown to AX: assemblies (or other packages), namespaces and so on. Although it would be possible to create some unique solution for Dynamics AX/X++, it makes much better sense to reuse what already exists: .NET. Dynamics AX is moving to this direction for many years, the question is where it will end up.

I believe (and hope) that X++ will be turned to another .NET language and I even believe it may be quite soon. We already have a way to compile X++ to CIL (although it’s currently far from a “normal” compiler) and with the help of Code Upgrade Service, it will be realistic to upgrade huge amounts of legacy code.