         'name': 'storage.type.basic-type-x.d'
       ]
     },
+    'basic-type-2': {
+      'patterns': [
+        {
+          'match': '\\*',
+          'name': 'storage.type.pointer.d'
+        },
+        {
+          'match': '\\[\\s*\\]',
+          'name': 'storage.type.array.empty.d'
+        },
+        {
+          'begin': '\\[',
+          'beginCaptures': { '0': { 'name': 'storage.type.array.expression.begin.d' } },
+          'end': '\\]',
+          'endCaptures': { '0': { 'name': 'storage.type.array.expression.end.d' } },
+          'patterns': [
+            {
+              'match': '\\.\\.|$',
+              'name': 'keyword.operator.slice.d'
+            },
+            { 'include': '#type' },
+            { 'include': '#expression' }
+          ]
+        },
+        { 'include': '#delegate-basic-type-2' },
+        { 'include': '#function-basic-type-2' }
+      ]
+    }
+    'delegate-basic-type-2': {
+
+    },
+    'function-basic-type-2': {
+
+    },
     # Defined in object.di
     'defined-type': {
       'patterns': [

          'end': '\\)',
          'name': 'entity.name.tag.user-defined-property.d',
          'patterns': [

          ]
        }
      ]

    'traits-expression': {
      'patterns': [
        'begin': '__traits\\s*\\(',
        'beginCaptures': { '0': { 'name': 'keyword.other.traits.begin.d' } },
        'end': '\\)',
        'endCaptures': { '0': { 'name': 'keyword.other.traits.end.d' } },
        'patterns': [
          { 'include': '#traits-keyword' },
          { 'include': '#traits-argument' }
