Advantage of including file in .info file and also in hook_theme() While studying the code in the Elements module, I noticed that the file elements.theme.inc is listed in elements.info, but is also listed for each theme implementation in elements_theme().

elements.info

name = Elements
description = Provides a library of Form API elements.
core = 7.x
files[] = elements.module
files[] = elements.theme.inc


elements.module -> elements_theme()

function elements_theme() {
  return array(
    'emailfield' =&gt; array(
      'arguments' =&gt; array('element' =&gt; NULL),
      'render element' =&gt; 'element',
      'file' =&gt; 'elements.theme.inc',
    ),
    'searchfield' =&gt; array(
      'arguments' =&gt; array('element' =&gt; NULL),
      'render element' =&gt; 'element',
      'file' =&gt; 'elements.theme.inc',
    ),
    'telfield' =&gt; array(
      'arguments' =&gt; array('element' =&gt; NULL),
      'render element' =&gt; 'element',
      'file' =&gt; 'elements.theme.inc',
    ),
    'urlfield' =&gt; array(
      'arguments' =&gt; array('element' =&gt; NULL),
      'render element' =&gt; 'element',
      'file' =&gt; 'elements.theme.inc',
    ),
    'numberfield' =&gt; array(
      'arguments' =&gt; array('element' =&gt; NULL),
      'render element' =&gt; 'element',
      'file' =&gt; 'elements.theme.inc',
    ),
    'rangefield' =&gt; array(
      'arguments' =&gt; array('element' =&gt; NULL),
      'render element' =&gt; 'element',
      'file' =&gt; 'elements.theme.inc',
    ),
  );
}


The Question

is there any advantage or performance improvement from listing the elements.theme.inc file in both places? Is there another reason why this might be necessary?

As always, I appreciate all responses.
The Elements module is using that slightly incorrectly; files[] is used to inform Drupal's autoloader of files that contain classes, so that they can be used without manually including the file they're declared in.

As elements.theme.inc doesn't contain any classes, listing it in files[] actually does nothing at all. Though it doesn't cause any problems, such is the nature of autoloading. 

So to directly answer the question, there can't really be an advantage of using one method over another, as they're used for different things. If elements.theme.inc contained a class as well as the theme functions, it would be perfectly valid to have both declarations.

As an aside, I've seen this plenty of times before - there was a bit of confusion when D7 first came out as to what files[] was for, and quite a few people chose to list all of, or the 'main' files of, their module.